Frage von pauli995, 69

Excel Makro x nur einmal ausführen. nächstes mal wieder ausführbar wenn makro y vorher ausgeführt wurde?

guten morgen, bekomme es einfach nicht hin, dass makro 2 nur einmal ausgeführt wird und das nächste mal wieder ausführbar ist wenn ich vorher makro 1 betätigt habe. makro 1 speichert bestimmte daten, die in eingabefelder eingegeben wurde und leert diese anschließend. mit dem 2. makro kann man die zuletzt eingegebene daten zurückrufen und bearbeiten. natürlich soll dies nciht endlos gehen, da sonst alle jemals einegegebene daten gelöscht/ überschriebeen werden indem man oft genug auf makro 2 ("bearbeiten") drückt. hier ist schon mal der anfang den ich mir zusammengebastelt habe:

Sub zurückbutton()



Select Case KlickNr

   Case 0: Call bearbeitenbuttonteil1
   Case 1: Call MsgBox("Nur die zuletzt eingegebene Daten können bearbeitet werden.")

End Select
KlickNr = KlickNr + 1
If KlickNr >= 1 Then
End Sub

nun ist es leider so, dass der button trotzdem unendlich male ausgeführt werden kann. ich habe es mit end with und exit versucht aber dann bekäme ich es ja nciht wieder hin, dass der button aktiviert wird nachdem ich makro 1("speichern") gedrückt habe

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 30

Der Aufbau müsste so ungefähr sein:

Dim KlickNr as Integer

Sub Makro1()
  If KlickNr = 0 Then
    '... KlickNr = 1
  End If
End Sub

Sub Makro2()
  '...
  KlickNr = 0
End Sub

Du könntest hier auch mit einem boolschen Wert (True / False) arbeiten.

Antwort
von Nube4618, 55

Die Variable KlickNr sollte Global definiert sein. Zudem muss die Abbruchbedingung am Anfang stehen, sonst werden die Anweisungen im Markro auch ausgeführt, wenn die Bedingung nicht zutrifft. Der Abbruch kann mit Exit Sub programmiert werden. 

Kommentar von pauli995 ,

trotzdem wird er ja dann nicht mehr ausgeführt obwohl ich den button y sdrücke. tut mir leid meine kenntnisse sind nicht gut genug aber die bedingung steht doch schon am anfang oder nicht ?!

Kommentar von Nube4618 ,

Die Bedingung müsste vor dem SELECT CASE stehen: 

If KlickNr >= 1 then exit sub

Kommentar von pauli995 ,

klappt! Danke! 

Wie bekomme ich es denn hin, dass der button wieder aktiviert wird, wenn ich vorher einen anderen ybutton betätigt habe. ich dachte ich könnte schlicht und einfach beim button y das einfügen:
Buttonx.Enabled = True

und so erzielen, dass wenn dieser betätigt wird der buttonx wieder aktiviert wird. klappt nicht. Gibt es da eine gute variante? 

Kommentar von Nube4618 ,

Müsste funktionieren mit .Enabled auf True oder False setzen. Also muss noch irgendwo ein Fehler drin sein. Falls man hier auch Files verschicken kann, kannst du mir dein gezipptes Excel schicken, dann guck ich mal rein, kann aber etwas dauern, bis ich dazu komme.

Keine passende Antwort gefunden?

Fragen Sie die Community