Я нашел много ресурсов в Интернете, которые делают почти то, что я хочу сделать, но не совсем. У меня есть именованный диапазон "daylist". Для каждого дня в 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, чтобы обрабатывать макросы, но я считаю, что должно быть что-то, что можно сделать немного более элегантно через параметры передачи, просто не уверен, как это сделать. Большое спасибо заранее!