【发布时间】:2021-02-11 17:34:00
【问题描述】:
我有一个 Sub,它根据存储在这些行上的值在多行中创建多个按钮。我有另一个 Sub 想要分配给每个按钮,但每行都有不同的参数。
第二个 sub 只选择名称作为参数的工作表。
两个子如下:
Sub GenerateButtons()
Dim btn As Button
Application.ScreenUpdating = False
ActiveSheet.Buttons.Delete
Dim t As Range
For i = 1 To 78 Step 1
Set t = ActiveSheet.Range(Cells(i, 5), Cells(i, 5))
Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height)
With btn
.OnAction = "'GoToSheet " & Sheets("SheetCount").Range("A" & i).Value & "'"
.Caption = Sheets("SheetCount").Range("A" & i).Value
.Name = Sheets("SheetCount").Range("A" & i).Value
End With
Next i
Application.ScreenUpdating = True
End Sub
Sub GoToSheet(sheet As String)
Sheets(sheet).Select
End Sub
当我运行第一个宏时,按钮和宏被分配给这些按钮,但是当我单击其中一个时,Excel 会提示一条错误消息,指出宏“MyWorkbook.xlsm'!'GoToSheet Argument1”不可用。
我已启用所有宏,并且这两个宏存储在标准模块 (Module1) 中。
这段代码有什么问题?如果有另一种方法可以完成此任务(每行的按钮选择一张表),我将不胜感激。
提前致谢。
【问题讨论】:
-
您作为参数添加到
OnAction的值是数字还是文本?您可能在参数周围缺少引号。 -
Sheets("SheetCount").Range("A" & i).Value 上的值是文本,我需要把它放在引号下吗?