Frage von nullahnung3000, 63

Wie zähle ich bei VBA (Excel) die Klicks auf einen button und füg ihn dann im Quellcode ein?

Bitte um eine ausführliche Erklärung, weil ich mich noch nicht sehr gut auskenne. Danke für Antworten im voraus.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Ninombre, Community-Experte für Excel, 58

Über eine sog. globale Variable oder indem du den Wert in einer Zelle ablegst. Dann kannst du beim erneuten Durchlaufen des Makro zunächst den alten Wert auslesen, verändern und wieder ablegen. 

Kommentar von nullahnung3000 ,

Ich arbeite leider ohne Zellen, aber geht es, dass man die Zahl auf der UserForm in einem Textfeld anzeigen kann und dann im Code abrufen kann? Bitte erklären, wenn du weißt wie es funktioniert.

Kommentar von maximilianus7 ,

dann arbeite mit zellen. per programm (makro) kannst du - wie gesagt - nichts in den code einfügen.

Kommentar von Ninombre ,

Ich nehme an, dass Du durch Buttons oder ähnliches einzelne Makros durchläufst und diese Variable ihren Wert behalten soll, also bspw. gezählt werden soll wie oft der Button schon gedrückt wurde.

Du kannst ein Textfeld nutzen, das kann man auch hidden=true setzen, damit es nicht sichtbar ist.

Alten Wert auslesen zu Beginn (wenn die Variable meinetwegen A heisst): A = userform1.textbox1.value
Dann A=A+1 um das erneute Durchlaufen festzuhalten und schließlich ablegen: userform1.textbox1.value=a
Wenn es tatsächlich nur diese eine Operation sein sollte geht es auch kürzer:
userform1.textbox1.value=userform1.textbox1.value+1
Auf die Variable kannst Du im Makro natürlich reagieren.

Sauberer wäre es als globale Variable:
Außerhalb des Makros
public a as integer (oder was es genau sein soll)

Damit bleibt der Wert erhalten, auch wenn die Sub beendet wird.

Kommentar von nullahnung3000 ,

Danke schon mal, aber irgendwo müsste doch dann noch der gedrückte button rein.

Im Moment bin ich so weit:

Private Sub btnUntenRechts_Click()

LabelUntenMove.Left = LabelUntenMove.Left + 15
End Sub

Private Sub 'was muss hier angegeben werden?
a = Label5.Value
a = a + 1 ',wenn btnUntenRechts gedrückt wurde
Label5.Value = a
End Sub
Kommentar von Ninombre ,

Kein neues sub sondern direkt nach dem labeluntenmove noch hinzufügen. 

Kommentar von nullahnung3000 ,

".value" existiert nicht. Weiß jemand, was stattdessen da hin muss?

 

Kommentar von PWolff ,

"Caption". (Oder, falls es inzwischen auch VBA.NET gibt, "Text".)

Antwort
von Garfield0001, 38

Eine Möglichkeit wäre, die Tag-Eigenschaft des Buttons zu nutzen in der Click-Routine

Button1.Tag = Button1.Tag + 1

Wichtig ist, dass die Tag-Eigenschaft zb auf "0" steht.

Und das kannst du ja jederzeit auslesen

If Button1.Tag > 5 Then 

Wichtig zu erwähnen ist, dass die UserForm auch die ganze Zeit offen sein muss. Wird sie geschlossen ist der Tag-Wert ja auch weg. Dann kann man nur "außerhalb" speichern (Registriy, ini-Datei, Zelle)

Antwort
von zalto, 31

Im einfachsten Fall einfach die Klickanzahl in einer globalen Variable hochzählen:

Public counter As Long


Private Sub btnUntenRechts_Click()
counter = counter + 1
MsgBox counter & " mal geklickt"
End Sub
Kommentar von nullahnung3000 ,

Danke, aber sobald man die msgbox schließt und nochmal auf den button drückt, dann erscheint "1 mal geklickt" wieder. Besser wäre es, wenn  da "2 mal geklickt" stehen würde. Außerdem will ich nicht, dass jedes mal die msgbox das Programm abbricht. Kennst du eine Möglichkeit den Text in ein Textfeld einblenden zu lassen? Ich hoffe du kannst mir weiterhelfen.

Kommentar von zalto ,

Letzlich war Deine Anforderung nur, den Wert in einer Variable zu speichern - und das geschieht hier. Es hält Dich ja keiner davon ab, den Wert ganz anders auszugeben, oder in eine Datei oder eine Datenbank zu schreiben - nur zu!

Wenn Dir die globale Variable nicht global genug ist, und Du sie über die Laufzeit des Programms hinweg abspeichern willst, wird Dir auch nichts anderes übrig bleiben, als genau dies zu tun.

Kommentar von PWolff ,

Eine "Dialogausgabe" (wie hier MsgBox) verwendet man in Codebeispielen, um auf einfache Weise zu zeigen, dass der Codeabschnitt das gewünschte leistet.

Die Leute, die Codebeispiele (z. B. für Lehrbücher oder auch hier) schreiben, gehen davon aus, dass der Leser weiß, wie er den Beispielcode für seine eigenen Zwecke anpassen kann.

Antwort
von maximilianus7, 37

tut mir leid, deine frage macht überhaupt keinen sinn.

erzähl genauer, was du vorhast.

jedenfalls kannst du nicht mittels eines makros den eignenen quellcode verändern.

Kommentar von nullahnung3000 ,

Ich will, dass ich z.B. 5x mal auf einen button klicke und das ich dann die Zahl  5 als Variable im Quellcode anzeigen lassen kann. Also a = (z.B.) 5. Wäre gut, wen du wüsstest wie das geht und es erklären würdest.  

Kommentar von PWolff ,

Vermutlich verwenden wir hier den Begriff "im (Quellcode)" unterschiedlich.

Es sieht so aus, als wenn du fragst, wie der Quellcode aussehen muss, um diese Anzahl irgendwo anzuzeigen.

Üblicherweise versteht man unter "Im Quellcode", dass man die Änderungen sieht, wenn man z. B. eine Entwicklungsumgebung öffnet und sich den Quellcode anzeigen lässt. Es gibt ein paar Skriptsprachen, die ihren eigenen Quellcode modifizieren können, aber VB(A) gehört definitiv nicht dazu.

Keine passende Antwort gefunden?

Fragen Sie die Community