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

...komplette Frage anzeigen

4 Antworten

Ü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. 

nullahnung3000 15.04.2016, 18:01

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.

0
maximilianus7 15.04.2016, 18:04
@nullahnung3000

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

0
Ninombre 15.04.2016, 19:21
@nullahnung3000

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.

2
nullahnung3000 15.04.2016, 20:05
@Ninombre

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
0
Ninombre 15.04.2016, 20:32
@nullahnung3000

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

0
PWolff 17.04.2016, 13:12
@nullahnung3000

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

0

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)

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
nullahnung3000 16.04.2016, 19:38

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.

0
zalto 16.04.2016, 20:01
@nullahnung3000

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.

1
PWolff 17.04.2016, 13:10
@zalto

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.

1

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.

nullahnung3000 15.04.2016, 17:58

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.  

0
PWolff 17.04.2016, 13:07
@nullahnung3000

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.

0

Was möchtest Du wissen?