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
|