前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >探讨:通过字符串参数动态调用过程

探讨:通过字符串参数动态调用过程

作者头像
fanjy
发布2024-05-22 15:17:49
740
发布2024-05-22 15:17:49
举报
文章被收录于专栏:完美Excel完美Excel

标签:VBA

我们知道,VBA的一个过程可以方便地调用另一个过程。然而,如果调用过程中涉及到传递参数,那就有点意思了。下面,探讨几种传递过程。

下面是一个带可选参数的示例过程:

代码语言:javascript
复制
Sub my_sub(Optional par1 As Variant = "myself", Optional par2 As Variant = "excelperfect")
 MsgBox par1 & "," & par2
End Sub

我们使用下面的过程来调用my_sub过程:

代码语言:javascript
复制
Sub test1()
 Application.Run "my_sub", "fan"
End Sub

运行良好。

再用下面的过程来试一试:

代码语言:javascript
复制
Sub test2()
 Application.Run "'my_sub(3+5)'"
End Sub

也运行良好。

然而,下面这个过程:

代码语言:javascript
复制
Sub test3()
 Application.Run "'my_sub(3+5,5+6)'"
End Sub

就会触发运行时错误。

稍作修改:

代码语言:javascript
复制
Sub test4()
 Application.Run "'my_sub'(3+5,5+6)"
End Sub

可以运行,但结果会出现两次。

修改成下面这样:

代码语言:javascript
复制
Sub test5()
 Application.Run "'my_sub(3+5),(5+6)'"
End Sub

运行良好。

或者:

代码语言:javascript
复制
Sub test6()
 Application.Run "'my_sub 3+5,5+6'"
End Sub

也可以运行。

下面再看看这个过程:

代码语言:javascript
复制
Sub my_set_interior(r As Range, Optional lColor As Long = vbRed)
 r.Interior.Color = lColor
End Sub

使用下面的过程调用:

代码语言:javascript
复制
Sub my_call()
 Application.Run "'my_set_interior(Selection),(vbGreen)'"
End Sub

会触发“运行时错误424:要求对象”。

使用下面的过程调用:

代码语言:javascript
复制
Sub Calling_directly()
 my_set_interior Selection, vbGreen
End Sub

运行良好。

然而,给参数加上括号:

代码语言:javascript
复制
Sub Calling_directly_with_parentheses()
 my_set_interior (Selection), (vbGreen)
End Sub

也会触发“运行时错误424:要求对象”。

使用Run方法:

代码语言:javascript
复制
Sub Calling_with_quote()
 Application.Run "'my_set_interior Selection,vbGreen'"
End Sub

运行良好。

有兴趣的朋友,可以试试,加深对过程之间正确使用参数调用的理解。

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

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

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

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

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