Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Image
BildScreenshot zu Image Image-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Click Zähler auf Null setzen

Betrifft: Click Zähler auf Null setzen von: Dieter(Drummer)
Geschrieben am: 12.10.2020 09:21:40

Guten Morgen VBA Spezislisten/-innen.

Wie muss der Code lauten, wenn ich den Click Zähler und die Zahl in Label2, wieder auf Null setzen möchte?
Bisher wird der Click Zähler erst wieder auf Null gesetzt, wenn ich die Userform1 beende.

Dieser Code gibt bei jedem Klick auf "img1" die entprechende Zahl im Label2 aus. Das funktioniert.

Click Zähler, z..B. in img1(Image1 auf Userform)

Static cnt As Long
    cnt = cnt + 1
   Label2.Caption = cnt
Mit der Bitte um Hilfe, grüßt
Dieter(Drummer)

Betrifft: AW: Click Zähler auf Null setzen
von: Matthias L
Geschrieben am: 12.10.2020 09:43:41

Hallo Dieter,

würde ich so machen:
Option Explicit
Public cnt As Long
Private Sub Image1_Click()
 cnt = cnt + 1
 Label1.Caption = cnt
End Sub

Private Sub Label1_Click()
cnt = 0
Label1.Caption = cnt
End Sub
Beim Klick aufs Label auf 0 setzen.
Evtl. noch ne Abfrage rein ob wirklich zurückgesetzt werden soll.

Gruß Matthias

Betrifft: AW: Click Zähler auf Null setzen
von: Dieter(Drummer)
Geschrieben am: 12.10.2020 10:10:29

Danke Matthias,

ich muss kurz weg und melde mich aber nacher und teste.

Gruß, Dieter(Drummer)

Betrifft: AW: Sorry Matthias und Daniel ...
von: Dieter(Drummer)
Geschrieben am: 12.10.2020 11:32:33

... ich hätte den ganzen bisgerigen Code des img1 zeigen sollen. Die Varianten von euch kann ich leider nicht umsetzen.

Wäre schön wenn mir da nochmal geholfen wird. Der Clickzähler sollte, wenn ich auf einen anderen Button klicke, kann auch Label2 sein, auf Null gehen. Also im img1 und im Label.

Hier mein bisherige Code, der Clicks richtig zeigt und die Variante in wieder auf Null zu setzen, bekomme ich nicht hin.

Gruß, Dieter(Drummer)
Sub img1_Click() 'MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single,  _
ByVal Y As Single)
  Label1 = Label1.Caption + CLng(img1.Tag) 'Plus
    img1.Enabled = False
      img1a.ZOrder msoBringToFront 'Herber: von Herbert_Grom am 02.10.2020 16:58:10
'Klick Zähler
  Static cnt As Long
    cnt = cnt + 1
   Label2.Caption = cnt '& " :Z1"
End Sub


Betrifft: AW: Sorry Matthias und Daniel ...
von: Daniel
Geschrieben am: 12.10.2020 12:04:10

Das geht schon so, wie wir dir gezeigt haben.
Du musst das Rücksetzen des Zählers in jedem Button programmieren, der das Label zurücksetzen soll.

Gruß Daniel

Betrifft: Antworte doch:wo ist das Problem ? kwT
von: Helmut
Geschrieben am: 12.10.2020 12:46:21



Betrifft: AW: Problem gelöst ...
von: Dieter(Drummer)
Geschrieben am: 12.10.2020 13:35:26

Hallo Helmut,

das Problem hat sich gelöst durch Matthias und Daniel. Habe es umsetzen können.

Gruß, Dieter(Drummer)

Betrifft: AW: Danke Matthies und Daniel, jetzt ...
von: Dieter(Drummer)
Geschrieben am: 12.10.2020 12:46:28

... klappt es wie gewünscht.

Danke und Gruß,
Dieter(Drummer)

Betrifft: AW: Danke Matthias und Daniel ...
von: Dieter(Drummer)
Geschrieben am: 12.10.2020 12:32:15

... damit komme ich jetzt erstmal klar und probiers aus, bis es klappt :-).

Danke und einen erfeulichen Tag.
Gruß, Dieter(Drummer)

Betrifft: AW: Click Zähler auf Null setzen
von: Daniel
Geschrieben am: 12.10.2020 10:18:44

Hi


Statische Variablen sind nur innerhalb des einen Makros bekannt, daher ist es schwierig, sie von außen zu ändern.

Eine Möglichkeit wäre, dass du, wie von Matthias gezeigt, anstelle der internen statischen Variable eine Projekt weit gültige (aka globale) Variable verwendest.
Diese sind ebenfalls statisch, können aber von anderen Makros verwendet und geändert werden.

Eine andere Möglichkeit wäre, ganz auf die Variable zu verzichten. der Ausgangswert steht ja in der Caption des Labels, also nimm diese direkt.
Label2.Caption = Val(Label2.Caption) + 1
Label2.Caption = ""
Die Val-Funktion wandelt einen Text, der wie eine Zahl aussieht, in eine Zahl.
Texte, die sich nicht wandeln lassen, erzeugen bei VAL keinen Fehler, sondern den Wert 0.

Bei Dezimalzahlen erwartet VAL immer den Punkt als Dezimalzeichen. Da du hier aber mit Ganzzahlen arbeitet, ist das egal.

Gruß Daniel