【问题标题】:Syntax for Assign Macro with Argument (buttons)带参数分配宏的语法(按钮)
【发布时间】: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


【解决方案1】:

你不能直接运行带参数的过程,你需要编写另一个过程来调用UnhideTab,如下所示:

Option Explicit
Sub UnhideTab(ByVal SheetName As String)
'MsgBox "Running UnhideTab " & SheetName

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(SheetName)
'Dim newshtname As String
    With ws
        If .Visible = True Then
            .Copy After:=ws
            ThisWorkbook.Sheets("Client Info").Select
    '            MsgBox "What is this instance of " & SheetName & "called?", vbOKCancel, "Name New Sheet"
        Else
            .Visible = True
        End If
    End With

End Sub
Sub Unhide()

    UnhideTab "MySheet"

End Sub

我还更改了您的代码,您无需遍历每个工作表,您知道要检查哪个工作表,因此只需使用它的名称即可。

【讨论】:

  • 谢谢 Damian,真的,我不需要遍历所有工作表。但是,我可以直接运行带参数的宏:exceloffthegrid.com/… 看一半,“运行带参数的宏”
  • @jfgoodhew1 如果有帮助,请考虑将答案标记为正确,以便其他人可以轻松找到。
  • 嗯,它有所帮助,但你没有回答为什么以前的操作语法停止工作,而如果我将完全相同的语法(使用复制和粘贴)重新输入到我的按钮的分配宏框中..它再次起作用。我假设 Microsoft 更新是恶作剧,但.. 谁知道..
  • 我的错误,你能显示你的工作代码的打印和那个不工作的代码吗?打印图像
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
相关资源
最近更新 更多