我在互联网上找到了很多资源,几乎可以完成我想做的事情,但并不完全。我有一个命名范围“日程表”。对于 dayList 中的每一天,我想在用户表单上创建一个按钮,该按钮将运行当天的宏。我能够动态添加按钮,但不知道如何将 daycell.text 从命名范围传递到按钮、事件处理程序、宏:S 这是我必须创建用户表单的代码:
Sub addLabel()
ReadingsLauncher.Show vbModeless
Dim theLabel As Object
Dim labelCounter As Long
Dim daycell As Range
Dim btn As CommandButton
Dim btnCaption As String
For Each daycell In Range("daylist")
btnCaption = daycell.Text
Set theLabel = ReadingsLauncher.Controls.Add("Forms.Label.1", btnCaption, True)
With theLabel
.Caption = btnCaption
.Left = 10
.Width = 50
.Top = 20 * labelCounter
End With
Set btn = ReadingsLauncher.Controls.Add("Forms.CommandButton.1", "runButton", True)
With btn
.Caption = "Run Macro for " & btnCaption
.Left = 80
.Width = 80
.Top = 20 * labelCounter
' .OnAction = "btnPressed"
End With
labelCounter = labelCounter + 1
Next daycell
End Sub
为了解决上述问题,我目前提示用户输入他们想要运行的日期(例如 Day1)并将其传递给宏并且它可以工作:
Sub B45runJoinTransactionAndFMMS()
loadDayNumber = InputBox("Please type the day you would like to load:", Title:="Enter Day", Default:="Day1")
Call JoinTransactionAndFMMS(loadDayNumber)
End Sub
Sub JoinTransactionAndFMMS(loadDayNumber As String)
xDayNumber = loadDayNumber
Sheets(xDayNumber).Activate
-Do stuff
End Sub
因此,对于我的每个 runButtons,它需要显示 daycell.text,并运行一个宏,该宏使用相同的文本作为参数来选择工作表来执行其操作。
任何帮助都是极好的。我已经看到动态编写 vba 代码以处理宏的响应,但我相信必须有某种方式可以通过传递参数更优雅地完成,只是不知道如何。提前谢谢了!