jus*_*try 6 vba ms-word word-vba office-2010
这是我的子看起来像:
Sub InsertRowWithContent(rowNo As Long)
Run Code Online (Sandbox Code Playgroud)
这是我的.onAction:
.OnAction = "'InsertRowWithContent""" & C & """'"
Run Code Online (Sandbox Code Playgroud)
C是前面声明的Long变量.
它说没有找到宏.在添加参数之前它工作正常!
我用这种语法成功传递了参数:
.OnAction = "=InsertRowWithContent(" & C & ")"
Run Code Online (Sandbox Code Playgroud)
注意事项:
编辑
我上面的回答以Access为背景.Djikay的答案适用于Excel.然而,经过一些挖掘,我很安静,确保只是Word不理解这些语法.Word VBA无法将参数传递给OnAction语句中的sub .至少目前最好接受这一点.
但这是Word(2010)最终运行的内容:
创建命令栏和按钮.对于OnAction,只传递名称Sub.但是使用按钮的Parameter属性.
' Add bar
Set cdb = Application.CommandBars.Add("SomeTest", , False, False)
cdb.Visible = True
' Add button
Set cbb = cdb.Controls.Add
cbb.Caption = "PressMe"
cbb.OnAction = "TheCallback"
cbb.Parameter = 456
Run Code Online (Sandbox Code Playgroud)
然后,通过CommandBars.ActionControl.Parameter表达式访问参数:
Public Sub TheCallback()
MsgBox "The parameter passed is: " & CommandBars.ActionControl.Parameter
End Sub
Run Code Online (Sandbox Code Playgroud)
ActionControl与ActiveControlAccess下的非常相似(如果不相同):它是最后点击的控件.
资料来源:http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_24982922.html
*phuu*:-)
您需要在您的子名称后添加一个空格,如下所示:
.OnAction = "'InsertRowWithContent " & C & "'"
^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
编辑
此外,由于您传递的是 Long 参数,因此不应将其括在引号中。
编辑 2
好的,这将需要一些特殊的酱汁(代码)。我一直在试验,我得到了以下工作。
在 Sheet1 Excel 对象中:
Option Explicit
Sub DestroyToolbar()
Application.CommandBars("DoomBar").Delete
End Sub
Sub MakeToolbar()
Dim C As Long
C = 100
With Application
.CommandBars.Add(Name:="DoomBar").Visible = True
With .CommandBars("DoomBar")
.Controls.Add Type:=msoControlButton, ID:=2950, Before:=1
With .Controls(1)
.OnAction = "'PressMe " & C & "'"
End With
End With
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
在新的标准代码模块中,添加以下内容:
Public Sub PressMe(C As Long)
With Application.CommandBars("DoomBar")
With .Controls(1)
MsgBox "The value of C that was passed to this macro is: " & C
End With
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
如果运行MakeToolbar,它将在“加载项”功能区中创建一个新工具栏。要删除它,您可以运行DestroyToolbar.
工具栏就位后,单击该按钮应显示值为C(在我的示例中为 100)的消息框。
我已经在 Excel 2010 中测试了上述内容,并且它在一个全新的 .xlsm 文件中工作。
| 归档时间: |
|
| 查看次数: |
13185 次 |
| 最近记录: |