Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

BeforeClose CommandButton auf Ausgangsstellung
#1
Hi,

Habe den "CommandButton1" in allen Arbeitsblättern, mit beim Anklicken wechselnder Beschriftung ("Eingabe"/"Bearbeitung").

Sie sind zusammengeschaltet, so dass, wenn 1 Button geklickt wird, alle gedrückt sind. Bei "Bearbeitung" bleibt Excel im F2-Modus.

Was trage ich im BeforeClose-Code ein, dass die Buttons auf "Eingabe" gestellt werden? Analog zu ToggleButton1.Value = False wird wohl nicht funktionieren?
Verschiedene Versuche mit CommandButton1.Caption = "Eingabe" brachten keinen Erfolg.

Gruß
Uwe

In den Arbeitsblättern:

Code:
Private Sub CommandButton1_Click()
   CommandButton1.Caption = IIf(CommandButton1.Caption = "Bearbeitung", "Eingabe", "Bearbeitung")
   ThisWorkbook.Names("T_1").Comment = CommandButton1.Caption
End Sub

Private Sub Worksheet_Activate()
   CommandButton1.Caption = ThisWorkbook.Names("T_1").Comment
End Sub
Antworten Top
#2
Hallo Uwe,

im BeforeClose wird das aber nicht immer was nutzen, oder?

Wäre da nicht BeforeSave angebrachter? Allerdings würde das dem Anwender eventuell nicht gefallen, wenn er zwischendurch speichert.

Bliebe noch, beim Öffnen der Datei einen Anfangswert zu setzen, oder? Allerdings kommt der auch nicht, wenn beim Öffnen die Makros deaktiviert werden. Aber dann geht ja auch anderes nicht ;-(
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hi, im Workbook_Open hab ich's auch probiert... Sad

Wie müsste die Zeile denn aussehen?
Antworten Top
#4
Hallöchen,

Du musst dem Makro auch den Ort des CommandButtons mitgeben. Wenn wirklich auf jedem Blatt ein CommandButton1 existiert - und kein Diagrammblatt, dann könnte das so aussehen. Wenn nicht, brauchst Du weitere Bedingungen oder eine Fehlerbehandlung oder ... Dein Code schaltet allerdings die Beschriftung auf den anderen Zustand. Es reicht, wenn Du nur die gewünschte Caption programmierst, also nur blaetter.CommandButton1.Caption = "Eingabe". Ich habe unten Deine Originalzeile drin.

Code:
Private Sub Workbook_Open()
For Each blaetter In ThisWorkbook.Sheets
   blaetter.CommandButton1.Caption = IIf(blaetter.CommandButton1.Caption = "Bearbeitung", "Eingabe", "Bearbeitung")
Next
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Ich habe beide Varianten probiert.

Der einzige Unterschied zu vorher ist, dass nach Dateiöffnung der Button im ersten Tabellenblatt auf Eingabe steht. In den anderen Blättern auf Bearbeitung. Wechselt man dann wieder ins erste Blatt, steht der Button dann auch auf Bearbeitung. Was könnten weitere Bedingungen sein?
Antworten Top
#6
Moin
kann sein, dass ich mich irre, und das Hirn noch nicht ganz wach.
Ist die Iif- Funktion nicht zu verstehen wie If-Then-Else ?
Dann lese ich aus dem Befehl :
Wenn "Bearbeitung" dann "Eingabe" (ok) sonst "Bearbeitung" (also wenn er auf "Eingabe" steht dann "Bearbeitung" ???)

Ansonsten wünsch ich ein schönes Frühstück mit viel Kaffee

Igel
Ich kann nicht alles wissen,
aber vieles lernen ! 19
Antworten Top
#7
Hatte bis jetzt 1 Tasse, danke.

Zumindest ist dein Hirn VBA-mäßig wacher als meins.

Wie müsste die Zeile mit der IIf-Funktion dann aussehen, wenn der Button beim Öffnen der Datei von "Bearbeitung" auf "Eingabe" switchen soll? Mit

Code:
Private Sub Workbook_Open()
For Each blaetter In ThisWorkbook.Sheets
  blaetter.CommandButton1.Caption = IIf(blaetter.CommandButton1.Caption = "Bearbeitung", "Eingabe", "Bearbeitung")
Next
End Sub


hat's leider nicht funktioniert. Übrigens auch nicht wenn man "Bearbeitung" und "Eingabe" vertauscht. Trotzdem verhält sich der Button im aktiven Blatt wie oben beschrieben. Die anderen CommandButton1-Buttons reagieren überhaupt nicht. Anscheinend versteht Excel nicht, dass ALLE Blätter gemeint sind. Oder?

Jetzt hole ich mir erst ne 2. Tasse!!
Antworten Top
#8
Hi,

vielleicht so?
Code:
blaetter.CommandButton1.Caption = IIf(blaetter.CommandButton1.Caption = "Bearbeitung", "Eingabe", "Eingabe")

ungetestet!
Antworten Top
#9
Hab's direkt probiert. Immer dasselbe Ergebnis, seltsamerweise!

Wahrscheinlich würde
blaetter.CommandButton1.Caption = "Eingabe"
reichen, aber Excel setzt halt nur den Button im beim Öffnen aktiven Blatt auf "Eingabe" und geht nicht alle Blätter durch. Geht man, wie gesagt, dann wieder in das erste Blatt, switcht er wieder auf "Bearbeitung".

Code:
Private Sub Workbook_Open()
For Each blaetter In ThisWorkbook.Sheets
  blaetter.CommandButton1.Caption = "Eingabe"
Next
End Sub
Antworten Top
#10
Hallo,
ThisWorkbook.Names("T_1").Comment
"geistert" vermutlich unverändert in Deinen Codes herum?

Welche gravierenden Nachteile hatte denn die Userformvariante?

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste