Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema CommandButton | |
---|---|
![]() |
CommandButton-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: Welcher CommandButton wurde gedrückt? Schleife?
von: Sonja
Geschrieben am: 16.07.2019 16:00:41
Hallo ihr Lieben,
hoffe ihr könnt und wollt mir helfen ;-)
Ich habe eine UserForm mit insgesamt 16 CommandButtons. Je nach dem welcher Button gedrückt _
wurde, möchte ich in eine entsprechende Zeile schreiben. Hoffe die Problemstellung ist verstä _
ndlich.
Private Sub CommandButton1_Click() CMB = 1 Worksheets(2).Cells(CMB, 10) = CMB End Sub
Private Sub CommandButton2_Click() CMB = 2 Worksheets(2).Cells(CMB, 10) = CMB End Sub
Private Sub CommandButton3_Click() CMB = 3 Worksheets(2).Cells(CMB, 10) = CMB End Sub
Private Sub CommandButton ... _Click() CMB = ... End Sub
Betrifft: Klassenprogrammierung
von: Rudi Maintaire
Geschrieben am: 16.07.2019 16:26:17
Hallo,
füge ein Klassenmodul ein.
Name: clsButton
Code:
Option Explicit Public WithEvents myButton As MSForms.commandbutton Private Sub myButton_Click() MsgBox myButton.Caption End Sub
Option Explicit Dim objButton(1 To 16) As New clsButton '16 Commandbuttons Private Sub UserForm_Initialize() Dim objControl As Control, i As Integer For Each objControl In Me.Controls If TypeName(objControl) = "CommandButton" Then i = i + 1 Set objButton(i).myButton = objControl With objButton(i).myButton .Caption = i End With End If Next End SubGruß
Betrifft: AW: Klassenprogrammierung
von: Sonja
Geschrieben am: 17.07.2019 21:06:20
Hey Rudi,
vielen Dank. Leider sind meine VBA Kenntnisse noch nicht bis zur Anwendung von Klassen vorgedrungen. Daher kann ich deinen Code nicht so ganz verstehen. Werde dies als Hausaufgabe mitnehmen.
Gruß Sonja
Betrifft: AW: Welcher CommandButton wurde gedrückt? Schleife?
von: onur
Geschrieben am: 16.07.2019 17:43:17
Private Sub CommandButton1_Click() Call test End Sub Private Sub CommandButton2_Click() Call test End Sub '..... '..... Private Sub CommandButton13_Click() Call test End Sub Public Sub test() Dim CMB, nam nam = ActiveControl.Name CMB = Val(Mid(nam, 14)) Worksheets(2).Cells(CMB, 10) = CMB End Sub
Betrifft: AW: Welcher CommandButton wurde gedrückt? Schleife?
von: Sonja
Geschrieben am: 17.07.2019 21:03:46
Hey Onur,
vielen Dank. Super Idee mit dem "Abschneiden" des Namens des Buttons. Konnte ich gleich noch an anderer Stelle verwenden.
Gruß Sonja
Betrifft: AW: Welcher CommandButton wurde gedrückt? Schleife?
von: Daniel
Geschrieben am: 17.07.2019 22:23:04
HI
ich würde hier statt der 16 Commandbuttons eine LISTBOX mit 16 einträgen verwenden.
dann reicht dir ein einziges Steuerelement und ein Makro:
Private Sub Listbox1_Click() if Listbox1.Listindex >= 0 Then CBM = Listbox1.ListIndex + 1 Worksheets(2).Cells(CMB, 10) = CMB Listbox1.ListIndex = -1 End if End SubGruß Daniel