前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Application.Goto语句应用秘技

Application.Goto语句应用秘技

作者头像
fanjy
发布2023-11-13 15:49:31
1900
发布2023-11-13 15:49:31
举报
文章被收录于专栏:完美Excel

标签:VBA,Goto语句

在程序中,Goto语句可以无条件地跳转到过程中指定的行。虽然说,过多使用Goto语句不符合结构化编程原则,会导致程序代码执行流混乱且不容易阅读。然而,在VBA中,Goto语句可以用来导航到指定的单元格区域。

例如,对于工作表Sheet1中的单元格区域C3:D5,想要通过VBA转到该区域。如果使用代码:

代码语言:javascript
复制
Dim GotoRange As String
GotoRange = "Sheet1!$C$3:$D$5"
Application.Goto GotoRange

VBA会给出错误!

我们可以使用:

代码语言:javascript
复制
Sheets("Sheet1").Range("$C$3:$D$5").Select

或者:

代码语言:javascript
复制
Application.Goto Reference:=Worksheets("Sheet1").Range("$C$3:$D$5")

或者:

代码语言:javascript
复制
Dim GotoRange As String
GotoRange = "Sheet1!$C$3:$D$5"
Application.Goto Range(GotoRange)

然而,如果非要使用Goto语句且要避免过长的语句解析,也就是解决本文开头给出的语句错误,可以使用一个小技巧。

实际上,Goto方法允许R1C1样式引用,而不允许A1样式的引用。在VBA中,有一个名为ConvertFormula方法,可以用来在这两种引用样式之间轻松切换。

下面的代码解决了开头出错的问题:

代码语言:javascript
复制
Dim GotoRange As String
GotoRange = "Sheet1!$C$3:$D$5"
Application.Goto Application.ConvertFormula(GotoRange, xlA1, xlR1C1)

或者:

代码语言:javascript
复制
Dim GotoRange As String
GotoRange = "Sheet1!$C$3:$D$5"
GotoRange = Application.ConvertFormula(GotoRange, xlA1, xlR1C1)
Application.Goto GotoRange

当然,如果你的工作表本身就是使用R1C1样式的引用,就不需要进行转换。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档