Znalazłem wiele zasobów w Internecie, które robią prawie co chcę zrobić, ale nie całkiem. Mam nazwany zakres "lista dzienna". Dla każdego dnia w liście dziennej chcę utworzyć przycisk na formularzu użytkownika, który uruchomi makro dla tego dnia. Jestem w stanie add the buttons dynamically ale nie wiem jak przekazać daycell.text z podanego zakresu, do przycisku, do obsługi zdarzeń, do makra: s Herezje kod mam stworzyć postać użytkownika:Przypisywanie procedur obsługi zdarzeń do formantów formularza użytkownika utworzonego dynamicznie w VBA
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
aby obejść powyższej kwestii i obecnie poprosi użytkownika o wpisanie dzień chcą uruchomić (np Day1) i przekazać do makro i to działa:
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
Więc dla każdego z moich runButtons, to musi wyświetlić daycell.text i uruchomić makro, które używa tego samego tekstu jako parametru, aby wybrać arkusz roboczy do wykonania swoich rzeczy.
Każda pomoc będzie świetna. Widziałem odpowiedzi, które dynamicznie zapisują kod vba, aby obsłużyć makra, ale uważam, że musi być w jakiś sposób można to zrobić nieco bardziej elegancko poprzez przekazywanie parametrów, po prostu nie wiem jak. Z góry bardzo dziękuję!
[to] (http://www.access-programmers.co.uk/forums/archive/index.php/t-88887.html) wygląda blisko tego, co chcesz. OTOH, dlaczego nie utworzyć combobox, który zapełnia się z 'daylist' i jednego przycisku polecenia, który może odczytać wybraną wartość? –
Myślę, że będę musiał wybrać tę opcję. Ponieważ makro służy do przesiewania i przesyłania danych, miałem nadzieję, że będę w stanie stworzyć mały ekran startowy, który będzie wypełniony, który będzie zawierał wiersz dla każdej daty i pokazuje liczbę rekordów, liczba błędów itp. przyciski dla każdego z nich sprawiają, że jest to trochę bardziej przyjazne dla użytkownika. Jednakże, chyba że znajdę prostsze rozwiązanie, myślę, że twoja sugestia zostanie zwycięzcą. – BiGXERO
Kolejna myśl ... Być może w specjalnym arkuszu roboczym można utworzyć tabelę powiązanych informacji (numer dnia, # rekordów, # błędów itp.) I przechwycić zdarzenia kliknięć. –