【发布时间】:2019-06-28 07:22:53
【问题描述】:
我在 Excel 中创建了一个漂亮的按钮样式对象。 我右键单击,分配宏。 过去,使用参数调用宏的语法是:
'SubName "Argument"'
我的 sub 有一个匹配的名称,并期望一个 String 变量类型作为它的唯一参数。
我的具体示例如下:
Option Explicit
Sub UnhideTab(ByVal SheetName As String)
'MsgBox "Running UnhideTab " & SheetName
Dim Sheet As Worksheet
'Dim newshtname As String
For Each Sheet In Worksheets
If Sheet.Name = SheetName Then
If Sheet.Visible = True Then
Sheet.Copy After:=Sheet
Sheets("Client Info").Select
' MsgBox "What is this instance of " & SheetName & "called?", vbOKCancel, "Name New Sheet"
Else:
Sheet.Visible = True
End If
End If
Next Sheet
End Sub
对于按钮,然后我将其放入“分配宏”框,例如:
'UnhideTab "Challenger"'
它会取消隐藏挑战者选项卡。工作了一年多,非常好。 现在,从最近几天开始,它不再起作用了。
错误消息就好像它根本没有得到参数:
“抱歉,我们找不到 。它可能被移动、重命名或删除了吗?”
有人知道为什么吗?
[编辑] 如果我将“分配宏”框中的语法完全替换为之前的语法,它就可以工作......!正如我所说,它们过去都工作得很好......没有任何改变......
[EDIT] 此处显示的结果:
工作代码与不工作代码的图像。我相信当我粘贴并覆盖“不工作”的代码时,它会在开始时添加对工作簿的引用,并用单引号 '' 包裹起来。仍然不知道它为什么会损坏/解决。
【问题讨论】:
-
我怀疑您对 MS 更新的评论是正确的,但谁能说。这不是官方记录的语法,因此使用起来总是有点冒险 - 而且,如果我没记错的话,它在 xlsb 格式的工作簿中根本不起作用。
-
没错,xlsb 可能会失败,但无论如何它都是内部的,我们不使用 xlsb... 有一天我会更新它以调用一个知道被点击按钮名称的函数。 . 但是现在,它又开始工作了:)
标签: excel vba syntax arguments