Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Image
BildScreenshot zu Image Image-Seite mit Beispielarbeitsmappe aufrufen

Befehle zusammenfassen - vereinfachen

Betrifft: Befehle zusammenfassen - vereinfachen von: Mike Excel
Geschrieben am: 31.08.2020 06:47:18

Hallo liebe Programmierfreunde!

Ich kann zwar die Befehle schreiben, sodass diese funktionieren, jedoch schaffe ich diese nicht zusammenzufassen bzw. kurz zu schreiben - sind immer wiederholende Befehle. Vielleicht könnt Ihr mir weiterhelfen bitte.
z.B.:

Private Sub CommandButton_KW1_Click()
'Link-Button zur KW1 Seite
    Sheets("KW1").Select
    Me.Hide
End Sub

Private Sub CommandButton_KW2_Click()
'Link-Button zur KW2 Seite
    Sheets("KW2").Select
    Me.Hide
End Sub

Das ganze geht bis Kalenderwoche (KW) 53 - ist natürlich ewig lang - wie könnte ich das zu vielleicht einen Befehl verkürzen?

Danke im Voraus!
LG Mike

Betrifft: AW: Befehle zusammenfassen - vereinfachen
von: Joachim Lewandowski
Geschrieben am: 31.08.2020 07:19:55

Guten Morgen
Hilft DAS:
for i=1 to 53
Blatt = "KW" & "i"
Sheets(Blatt).select
me.hide
next i

Gruß
Joachim

Betrifft: AW: Befehle zusammenfassen - vereinfachen
von: Mike Excel
Geschrieben am: 31.08.2020 07:53:39

Hallo Joachim!

Habe den nachstehenden Befehl versucht, hat aber leider nicht funktioniert.
Private Sub CommandButton_KW_Click()
'Link-Button zur KW Seite
For i = 1 To 53
    Blatt = "KW" & "i"
    Sheets(Blatt).Select
    Me.Hide
Next i
End Sub

Aber liege ich da falsch - bei diesem Befehl greift er zwar auf die Blätter 1 - 53 zu nur es geht nicht, weil noch nicht klar ist welcher Button mit welchen Blatt verknüpft sein sollte?

Betrifft: AW: Befehle zusammenfassen - vereinfachen
von: Joachim Lewandowski
Geschrieben am: 31.08.2020 08:28:19

verstehe
Mach eine Userform in der Du über eine Scrollbar die KW abfrägst
Nr=scrollbar1.value
liefert Dir den Wert.
Dann Blatt = "KW" & Nr und Du hast das gewünschte (Hoffe ich?)
Gruß
Joachim

Betrifft: AW: Befehle zusammenfassen - vereinfachen
von: Danielnnd erklärungen
Geschrieben am: 31.08.2020 08:36:56

Hi

Die Technik ein einziges Makro für mehrere Buttons mit gleicher Funktionalität zu schreiben nennt sich Klassenprogrammierung
Such mal danach, es gibt genügend Beispiele und Erklärungen im Archiv, ist aber kein Anfängerstoff.

Alternativ kannst du auch anstelle der 53 Buttons auch eine Listbox, Combobox oder das Registersteuerelement verwenden, um die Auswahl zu machen, dort brauchst du dann nur das Click- bzw das Change-Event als einziges Makro.

Wenns wirklich nur um die schnelle Auswahl geht, brauchst du vielleicht gar keine Userform, es reicht ein rechtsklick auf die Pfeile der Blattauswahl (unten links vor den Registern)

Gruß Daniel

Betrifft: AW: Befehle zusammenfassen - vereinfachen
von: Mike Excel
Geschrieben am: 31.08.2020 09:50:08

Es handelt sich ja schon um eine Userform, wo 53 Button (eben CommandButton_KW1_Click - KW53_Click
) sind. Ich wollte nur nicht 53 Mal den gleichen Befehl nur mit verschiedener KW Nr. schreiben. Dürfte aber nicht so einfach möglich sein.
LG

Betrifft: AW: Befehle zusammenfassen - vereinfachen
von: Rudi Maintaire
Geschrieben am: 31.08.2020 10:12:25

Hallo,
wie schon gesagt: mit einer Listbox o.ä ist's einfacher.

Kleine Verkürzung (alles im Modul der UF):
Private Sub CommandButton_KW1_Click()
  Call cmd_Click(1)
End Sub

Private Sub CommandButton_KW2_Click()
  Call cmd_Click(2)
End Sub

Sub cmd_Click(intBtn As Integer)
  Sheets("KW" & intBtn).Select
  Hide
End Sub

Gruß
Rudi

Betrifft: AW: Befehle zusammenfassen - vereinfachen
von: Mike Excel
Geschrieben am: 31.08.2020 12:23:10

Ok, werde mich einmal damit auseinandersetzen. Danke für eure Mühe!

LG

Mike

Betrifft: AW: Befehle zusammenfassen - vereinfachen
von: Daniel
Geschrieben am: 31.08.2020 11:11:38

Noch ne Idee:

1. erstelle ein Bild von den vielen Buttons.
Diese müssen jedoch alle gleich groß sein und regelmäßig angeordnet sein.

2. füge dieses Bild über das Image-Control ein.

3. verwende als Makro das MouseUP bzw MouseDown-Event.
du bekommst die X- und Y-Position des Mauszeigers beim Click als Variable zur Verfügung gestellt.
Bei regelmäßiger Anordnung der Buttons kannst du damit berechnen, welcher Button gemeint ist.

Gruß Daniel

Beiträge aus dem Excel-Forum zum Thema "Befehle zusammenfassen - vereinfachen"