Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Buttonclicks Anzahl begrenzen

Buttonclicks Anzahl begrenzen
03.06.2020 08:13:41
Stephan
Guten Morgen,
ich habe eine Userform2 mit einem Textbox1, in das eine Zahl eingetragen wird in Abhängigkeit von UserForm1. Auf Userform2 befinden sich zwei Buttons (Button1 und Button2). Ich würde jetzt gerne die Anzahl, wie oft man auf diese beiden Buttons drücken kann in Abhängigkeit von der Zahl in Textbox1 machen.
Beispiel:
TextBox1 hat eine 10, also darf man auch nur 10 mal gesamt auf Button1 und Button2 drücken.
Hintergrund:
Das ganze soll ein kleines Programm werden, das Produkte überprüft ob Sie "ok" sind oder "nicht ok" und dann die Ergebnisse in eine Datenbank übernimmt. Code dafür:
Private Sub CommandButton1_Click()
Dim last As Long
With Sheets("Datenbank")
last = .Cells(Rows.Count, 2).End(xlUp).Row + 1
.Cells(last, 2).Value = Date
.Cells(last, 3).Value = Format(Now, "hh:mm")
.Cells(last, 4).Value = "Ok"
End With
End Sub

Private Sub CommandButton2_Click()
Dim last As Long
With Sheets("Datenbank")
last = .Cells(Rows.Count, 2).End(xlUp).Row + 1
.Cells(last, 2).Value = Date
.Cells(last, 3).Value = Format(Now, "hh:mm")
.Cells(last, 4).Value = "Nicht Ok"
End With
End Sub

Wie kann ich denn jetzt die Begrenzung der Klicks auf die Buttons einbauen? Hat da jemand eine Lösung für mich?
Vielen Dank und beste Grüße,
Stephan

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Buttonclicks Anzahl begrenzen
03.06.2020 08:21:39
Felix
Morgen Stephan
Leg eine Public Variable an, der du den Wert 10 gibst. Bei jedem mal drücken wird Sie um eins subtrahiert. Dann überprüfst du ihren Wert größer 0 und wenn True dann erstelle den Datensatz, wenn False ...
Die Variable initialisierst du am besten beim Öffnen von UserForm1 jedes mal neu.
Schöne Grüße Felix
AW: Buttonclicks Anzahl begrenzen
03.06.2020 08:32:32
Stephan
Hi Felix,
danke für deine Antwort. Hättest du auch ein paar Zeilen Code für mich? Mit public variablen habe ich noch nie gearbeitet. Sind die dann auch über mehrere Useforms hinweg gültig?
Beste Grüße,
Stephan
AW: Buttonclicks Anzahl begrenzen
03.06.2020 08:39:08
Felix
Die Public Variable musst du in einem Standardmodul definieren
Public counter As Integer
Dann bei Userform_Initialize
counter = 10
Dann beim Commandbutton
Private Sub CommandButton1_Click()
Dim last As Long
With Sheets("Datenbank")
last = .Cells(Rows.Count, 2).End(xlUp).Row + 1
If counter > 0 Then
.Cells(last, 2).Value = Date
.Cells(last, 3).Value = Format(Now, "hh:mm")
.Cells(last, 4).Value = "Ok"
counter = counter -1
End If
End With
End Sub

VLG Felix
Anzeige
AW: Buttonclicks Anzahl begrenzen
03.06.2020 08:46:38
Stephan
Also ich habe
Public Counter As Integer
in "DieseArbeitsmappe" und mein Code sieht nun so aus:
Private Sub UserForm_Initialize()
TextBox1.Value = UserForm1.Label5
Counter = TextBox1.Value
End Sub

Private Sub CommandButton1_Click()
Dim last As Long
With Sheets("Datenbank")
last = .Cells(Rows.Count, 2).End(xlUp).Row + 1
If Counter > 0 Then
.Cells(last, 2).Value = Date
.Cells(last, 3).Value = Format(Now, "hh:mm")
.Cells(last, 4).Value = "Ok"
Counter = Counter - 1
End If
End With
End Sub

Allerdings passiert jetzt nichts mehr. Habe ich die Public Variable nicht richtig definiert?
Anzeige
AW: Buttonclicks Anzahl begrenzen
03.06.2020 08:52:15
Felix
Welchen Wert hat denn Userform1.Label5
Wenn du Counter = ... festlegst muss eine Zahl größer 0 sein sonst passiert nichts
AW: Buttonclicks Anzahl begrenzen
03.06.2020 08:57:53
Stephan
UserForm1.Labels ist eine Zahl, die in der ersten Userform aus Basis von 2 anderen Variablen ermittelt wird. Diese Zahl soll dann Basis für Userform2 für die Anzahl der erlaubten Clicks sein. Die Zahl ist immer ganzzahlig und positiv.
AW: Hier mal (m)eine Variante mit Textbox1.Tag
03.06.2020 09:08:29
Stephan
Hi Matthias,
ja das kommt dem Ganzen schon sehr nahe. Wie kann ich denn da jetzt noch einfügen, dass er in die letzte freie Zeile bestimmte Infos schreibt? Also wie das geht weiß ich, nur wo müsste ich den Code dann bei deinem Code einfügen?
So sieht das aktuell bei mir aus.
Private Sub CommandButton1_Click()
Dim last As Long
With Sheets("Datenbank")
last = .Cells(Rows.Count, 2).End(xlUp).Row + 1
.Cells(last, 2).Value = Date
.Cells(last, 3).Value = Format(Now, "hh:mm")
.Cells(last, 4).Value = "Ok"
TextBox1.Enabled = False
TextBox1.Value = TextBox1.Value + 1
TextBox1 = CLng(TextBox1 - 1)
If TextBox1 = "0" Then
CommandButton1.Enabled = False
CommandButton2.Enabled = False
End If
End With
End Sub

Anzeige
AW: Hier mal (m)eine Variante mit Textbox1.Tag
03.06.2020 09:47:34
Stephan
Hab´s schon rausgefunden, hätte das einfach nur nicht in der Schleife haben dürfen und musste deine Variable etwas anpassen :)
Code:
Private Sub CommandButton1_Click()
Dim last As Long
With Sheets("Datenbank")
last = .Cells(Rows.Count, 2).End(xlUp).Row + 1
.Cells(last, 2).Value = Date
.Cells(last, 3).Value = Format(Now, "hh:mm")
.Cells(last, 4).Value = "Ok"
End With
TextBox1.Value = CLng(TextBox1 - 1)
If TextBox1 = "0" Then
CommandButton1.Enabled = False
CommandButton2.Enabled = False
End If
End Sub
Danke für deinen Input!! :)
AW: Hier mal (m)eine Variante mit Textbox1.Tag
03.06.2020 10:19:36
Matthias
Hallo,
ich wollte Dir nur ein Bsp. zeigen wie man die Tag-Eigenschaft einer TextBox benutzen kann.
So wie Du es jetzt gepostet hast kannst Du das natürlich auch umsetzen.
Allerdings ist ja so die Textbox manipulierbar.
Ich hatte sie ja beim ersten Klick gesperrt.
Denn nur so kannst du sicherstellen das es auch wirklich nur z.B. 10 Klick geben kann.
Wie Du es jetzt machst, kannst Du ja z.B. nach 4 Klicks die TextBox wieder auf 10 setzen.
Zitat:
hätte das einfach nur nicht in der Schleife haben dürfen und musste deine Variable etwas anpassen
Nun, ich habe weder eine Schleife benutzt noch eine Variable
Es muss auch noch eine Fehlerbehandlung bzw. eine Abfrage rein ob in der TextBox eine Zahl steht.
If IsNumeric(TextBox1) Then
TextBox1.Value = CLng(TextBox1 - 1)
If TextBox1 = "0" Then
CommandButton1.Enabled = False
CommandButton2.Enabled = False
End If
Else
MsgBox " nur Zahlen erlaubt", vbCritical
End If
Gruß Matthias
Anzeige
AW: Hier mal (m)eine Variante mit Textbox1.Tag
03.06.2020 10:24:37
Stephan
Hi Matthias,
danke für dein Feedback. Die Fehlerbehandlung habe ich weggelassen, da ich die schon bei der Übernahme von UserForm1 in Userform2 in die Textbox drin habe, dachte mir dann wäre das überflüssig, oder? Das mit dem Sperren habe ich jetzt auch noch nachträglich eingefügt.
Danke nochmal, du hat mir wirklich sehr weitergeholfen! :)
also ich würde die Abfrage mit einbauen ...
03.06.2020 10:35:49
Matthias
Hallo
Ob das überflüssig ist oder nicht musst Du Testen.
Gib einfach mal in die TextBox einen Text ein und schau was passiert.
Ich vermute da bekommst Du einen VBA-Fehler.
Gruß Matthias
AW: Hier mal (m)eine Variante mit Textbox1.Tag
03.06.2020 09:55:51
Matthias
Hallo
Na das musst Du dort einfügen wo Du es brauchst.
Ich würde es ans Ende des Code stellen
Übrigens vor Rows gehört auch ein Punkt!
Private Sub CommandButton1_Click()
Dim last As Long
TextBox1.Enabled = False
'TextBox1.Value = TextBox1.Value + 1
TextBox1 = CLng(TextBox1 - 1)
If TextBox1 = "0" Then
CommandButton1.Enabled = False
CommandButton2.Enabled = False
End If
With Sheets("Datenbank")
last = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(last, 2).Value = Date
.Cells(last, 3).Value = Format(Now, "hh:mm")
.Cells(last, 4).Value = "Ok"
End With
End Sub

Private Sub CommandButton2_Click()
Dim last As Long
TextBox1.Enabled = False
TextBox1.Tag = TextBox1.Tag + 1
TextBox1 = CLng(TextBox1 - 1)
If TextBox1 = "0" Then
CommandButton1.Enabled = False
CommandButton2.Enabled = False
End If
With Sheets("Datenbank")
last = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(last, 2).Value = Date
.Cells(last, 3).Value = Format(Now, "hh:mm")
.Cells(last, 4).Value = "Ok"
End With
End Sub
Allerdings war diese Zeile nicht in meinem Beispiel drin
TextBox1.Value = TextBox1.Value + 1
Warum hast Du das eingefügt?
Denn damit funktioniert der Code ja nicht mehr wie er soll.
Gruß Matthias
Anzeige
AW: Hier mal (m)eine Variante mit Textbox1.Tag
03.06.2020 11:59:01
Stephan
Hi Matthias,
ich habe nochmal eine kurze Frage, wenn ich in der ersten Spalte in Excel eine Zahl von 1 bis zu der Zahl die in der TextBox1 steht hochlaufen lassen möchte, wie würde das funktionieren?
Private Sub CommandButton1_Click()
Dim last As Long
Dim j As Integer
j = 1
With Sheets("Datenbank")
last = .Cells(Rows.Count, 2).End(xlUp).Row + 1
.Cells(last, 1).Value = j
.Cells(last, 2).Value = Date
.Cells(last, 3).Value = Format(Now, "hh:mm")
.Cells(last, 4).Value = "Ok"
End With
TextBox1.Value = CLng(TextBox1 - 1)
If TextBox1 = "0" Then
CommandButton1.Enabled = False
CommandButton2.Enabled = False
MsgBox ("Die Prüfung ist abgeschlossen")
End If
End Sub
Damit bekomme ich in der ersten Zeile immer den Wert 1, weil ich meine VAriable j ja nirgendwo erhöhe. Wie würde das klappen? Hatte gerade den Beitrag von Emmily gesehen, allerdings hilft der mir bei meiner Frage nicht wirklich weiter :/
Vielen Dank nochmal,
Stephan
Anzeige
.Cells(last, 1).Value = j + 1: j = j + 1
03.06.2020 12:27:09
Matthias
Hallo,
die Deklaration außerhalb der Sub
Option Explicit
Public j&
Private Sub CommandButton1_Click()
Dim last As Long
With Sheets("Datenbank")
last = .Cells(Rows.Count, 2).End(xlUp).Row + 1
.Cells(last, 1).Value = j + 1: j = j + 1
.Cells(last, 2).Value = Date
.Cells(last, 3).Value = Format(Now, "hh:mm")
.Cells(last, 4).Value = "Ok"
End With
TextBox1.Value = CLng(TextBox1 - 1)
If TextBox1 = "0" Then
CommandButton1.Enabled = False
CommandButton2.Enabled = False
MsgBox ("Die Prüfung ist abgeschlossen")
End If
End Sub
Gruß Matthias
Anzeige
AW: .Cells(last, 1).Value = j + 1: j = j + 1
03.06.2020 12:33:31
Stephan
Vielen Dank Matthias, klappt hervorragend! :)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige