Excel VBA: Schaltfläche die je nach 1., 2., 3. Klick verschiedene Funktionen ausführt?

4 Antworten

Von Experte Suboptimierer bestätigt

Also, zunächst möchte ich anmerken, dass ich es eher ungeschickt finde, wenn unterschiedliche Dinge in Abhängigkeit von der Anzahl der Klicks passieren soll. Das ist ein eher verwirrendes Interface. Hast du zwei Mal geklickt und das Telefon klingelt dann, dann weißt du nicht mehr, wo du warst. Mehrere Buttons fände ich da besser.

Aber nun zu deiner Frage. Bei einem Klick muss immer dasselbe Sub aufgerufen werden. Da zählst du dann in einer Variable, der wievielte Klick es ist. Nach dem letzten möglichen Klick, musst du sie dann halt wieder auf 0 setzen.

Welcher Programmteil dann ausgeführt wird, kannst du in Abhängigkeit von der Variable mit einem if oder einem Select festlegen


Watches 
Beitragsersteller
 14.12.2022, 17:49

Danke erstmal! Geschickt finde ich es deshalb, weil ich damit aus einem Berechnungsinterface eine Tabelle / einen Speicher erzeugen möchte, der dann festhält welche Parameter zur Berechnung ausgewählt wurden. Man hat dann am Ende da stehen Position 1 mit xyz, Position 2 mit abc, usw.

Mit einem zweiten Button kann man dann die komplette Liste / den Speicher löschen und eine neue beginnen.

Das Berechnungsinterface verbleibt solange die ganze Zeit an der selben Position.

0

Immer die Caption auf der Schaltfläche Ändern:
Auf dem Knopf steht zunächst:
Null Clicks
dann: bereits 1 Click
dann: bereits 2 Click2
dann: bereits 3 Clicks ->ggf direkt zurück zu "Null Clicks"
im ClickEvent auf den Text des Buttons die unterschiedlichen Aktionen durchführen.

Zählvariable, die die Anzahl der Klicks zählt.

IF-Bedingungen, die je nach Wert in der Variable die entsprechende Funktion aufruft

Wenn alle Funktionen einmal durch sind, Zählvariable zurücksetzen....

Hallo, du könntest in der Nähe deiner Schaltfläche (hier Zelle B3) die Schritte zählen, und so steuern:

Sub NeuePosHinzu()
  Range("B3") = Range("B3") Mod 3 + 1
  Select Case Range("B3")
  Case 1
    MsgBox ("Schritt1")
  Case 2
     MsgBox ("Schritt2")
  Case 3
     MsgBox ("Schritt3")
  End Select
End Sub

Statt MsgBox... fügst du deine 3 Schritte ein.

Mit dieser Methode kannst du zur Not auch einen Schritt erzwingen der gerade nicht dran ist, indem du die Zahl in B3 überschreibst

Woher ich das weiß:eigene Erfahrung – Faulheit >> Neugier >> Wissen