Run 方法
运行一个宏或者调用一个函数。
该方法可用于运行用 Visual Basic 或 Microsoft Excel 宏语言编写的宏,
或者运行 DLL 或 XLL 中的函数。
语法:
Run(Macro, Arg1, Arg2, Arg3, Arg4, Arg5,Arg6, Arg7, Arg8, Arg9, _
Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, _
Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, _
Arg26, Arg27, Arg28,Arg29, Arg30)
Macro要运行的宏名字(过程名)。
它可以是具有宏名称的字符串、表示函数所在位置的 Range 对象,
或者是一个已注册的 DLL (XLL) 函数的注册号。
这里以运行VBA宏(跨工作簿调用)为例子讲解
宏名称有两种形式:
形式1:工作簿名!模块名.过程名
被调用的过程名在其所在的工程内,名称不是唯一的
也就是在不同的模块内有相同的过程名时,
那么在调用时需要加上所在模块的模块名字。
形式2:工作簿名!过程名
被调用的过程名在其所在的工程内,名字是唯一的。
另外,调用加载宏中的过程时可以不用加工作簿名,直接指定过程名即可。
Run 过程名这种形式调用时,先会搜索本工作簿是否有指定的过程,
然后再到加载宏中继续找,找不到就只有报错了。
(如果是同一个工程内的,没必要用run方法了,直接过程名就成了)
所以大家在写过程时,同一个工程内尽是不要有两个或多个同名的过程(事件是个例外)。
如果使用字符串,将在当前工作表的上下文中对该字符串求值。
Arg1-Arg30 可选 Variant 应传递给函数的参数。
返回值:Variant
说明:
此方法不可使用命名参数,参数必须通过位置进行传递。
Run 方法返回被调用的宏返回的任何值。
如果将对象作为参数传递给宏,该对象将转换为相应的值(通过对该对象应用 Value 属性)。
这意味着不能用 Run 方法将对象传递给宏。
示例1:
准备工作:新建两个工作簿(假设分别为工作簿1,工作簿2)
在工作簿1中添加一标准模块,复制以下代码:
Sub test()
Application.Run '工作簿2!模块1.test1'
'两个标准模块中均有test1过程,所以在调用时要指定模块名
Application.Run '工作簿2!模块2.test1'
'模块2的test1过程有两个可选参数
Application.Run '工作簿2!模块2.test1', '测试调用模块2的test1过程', _
'Application.run方法演示'
MsgBox '6*9=' & Application.Run('工作簿2!test2',6, 9)
'test2过程名在工作簿2中具有唯一性,所以不需要加上模块名
'另外,由于test2是个函数,有返回值,可以用在表达式中。
End Sub
在工作簿2中添加两个标准模块。
在模块1中复制如下代码:
Sub test1()
MsgBox '模块1'
End Sub
模块2中复制以下代码
Sub test1(Optional strPrompt As String ='测试显示内容', _
Optional strTitle As String = '测试标题')
MsgBox prompt:=strPrompt, Buttons:=vbInformation + vbOKOnly,Title:=strTitle
End Sub
Function test2(a As Long, b As Long)
test2 = a * b
End Function
准备工作完成后运行工作簿1中的test过程。
SendKeys 方法
将击键发送给活动应用程序。
语法:
SendKeys(Keys, Wait)
Keys 必选 Variant 要以文本形式发送给应用程序的键或组合键。
Wait 可选,如果为 True,则 MicrosoftExcel 会等到处理完按键后将控件返回给宏;
如果为 False(或者省略该参数),则继续运行宏而不等至处理完按键。
说明:
本方法将击键放到键盘缓冲区。某些情况下,在调用要使用击键的方法之前必须先调用此方法。
例如,若要往对话框中发送密码,则必须在显示对话框之前调用 SendKeys 方法。
Keys 参数可指定任何单个键或与 Alt、Ctrl 或 Shift 的组合键(或者这些键的组合)。
每个键可用一个或多个字符表示。例如,'a' 表示字符 a,或者 '{ENTER}' 表示 Enter。
若要指定那些没有屏幕回显该字符的键(例如,Enter 或 Tab),请使用下表所列的代码来表示相应的键。
表中的每个代码表示键盘上的一个对应键。
BACKSPACE {BACKSPACE} 或 {BS}
Break {BREAK}
Caps Lock {CAPSLOCK}
Clear {CLEAR}
Delete 或 Del {DELETE} 或 {DEL}
向下键 {DOWN}
End {END}
Enter(数字小键盘) {ENTER}
Enter ~(波形符)
Esc {ESCAPE} 或 {ESC}
Help {HELP}
Home {HOME}
Ins {INSERT}
向左键 {LEFT}
Num Lock {NUMLOCK}
PageDown {PGDN}
PageUp {PGUP}
Return {RETURN}
向右键 {RIGHT}
Scroll Lock {SCROLLLOCK}
Tab {TAB}
向上键 {UP}
F1 到 F15 {F1} 到 {F15}
还可指定与 Shift 和/或 Ctrl 和/或 Alt 组合使用的键。
若要指定与其他键组合使用的键,可使用下表。
要组合的键在键代码之前添加
Shift +(加号)
Ctrl ^(插入符号)
Alt %(百分号)
示例:来自校长的公式引用转换代码。
Sub changeyinyong()
Dim mrg As Range
If TypeName(Selection) = 'Range'Then
For Each mrg In Selection
SendKeys '{F2}'
'按F2键进入编辑状态
SendKeys '+{home}'
'按shift+home组合键全选公式部分
SendKeys '{F4}'
'按f4键转换
SendKeys '{enter}'
'跳出单元格编辑模式
Next mrg
MsgBox '单元格工作引用切换完成'
End If
End Sub
Volatile 方法
用于将用户自定义函数标记为易失性函数,无论何时在工作表的任意单元格中进行计算时,
易失性函数都必须重新进行计算。
非易失性函数只在输入变量改变时才重新计算,若不用于计算工作表单元格的用户自定义函数中,则此方法无效。
语法:
Volatile(Volatile)
Volatile 可选 Variant 如果为 True,则将函数标记为易失性函数。
如果为 False,则将函数标记为非易失性函数。
默认值为 True
示例:
Function mytime()
Application.Volatile
mytime = Format(Now, 'hh:mm:ss')
End Function
联系客服