Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1444to1448
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

Change-Event bei Labels

Change-Event bei Labels
13.09.2015 22:01:40
Timo
Hallo und guten Abend zusammen,
gibt es bei Labels in Userforms ein Change-Event o.ä.?
Ich möchte gerne ein Makro starten, sobald sich der Text bzw. Caption eines Labels ändert. Change und KeyPress funktioniert logischerweise nicht :(
Hat jemand eine Idee?
Viele Grüße
Timo

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Change-Event bei Labels
13.09.2015 22:06:26
Uduuh
Hallo,
die Caption kann sich ja nur durch ein Makro ändern. Dann rufe das auszuführende Makro dirkt hinter der Änderung auf.
...
Label1.Caption="Test"
Call DeinMakro
...
Gruß aus’m Pott
Udo

AW: Change-Event bei Labels
13.09.2015 22:06:32
Sepp
Hallo Timo,
welche Events es für ein Label gibt, siehst du ja wohl selbst.
Du änderst doch den Text per Code, dann kannst du auch mit dem selben Code das Makro aufrufen.
Gruß Sepp

Anzeige
AW: Change-Event bei Labels
13.09.2015 22:14:08
Timo
Hallo zusammen,
leider ist das nicht so einfach.
Der Text des Labels wird durch einen SVerweis bzw. WorksheetFunction.VLookup geändert.
Dieser Text muss weiterverarbeitet werden.
Wenn ich mein Makro hinten ran hänge, läuft es zwar, allerdings startet das Makro schon, bevor die
WorksheetFunction.VLookup den richtigen Text im Label eingefügt hat.
Deshalb möchte ich das Makro erst starten, wenn das Label wirklich gefüllt ist.
Daher der Gedanke, erst mit WorksheetFunction.VLookup füllen und dann wenn gefüllt Makro starten.
VG
Timo

zeig deinen Code owT
13.09.2015 22:19:28
Uduuh

AW: Change-Event bei Labels -> Textbox statt Label
13.09.2015 22:23:45
Daniel
Hi
also wie du ein Label über eine Funktion befüllst, dass musst du uns mal zeigen.
wenn du unbedingt ein Change-Event brauchst, dann kannst du auch statt dem Label eine Textbox verwenden.
wenn du die Eigenschaft .Locked = True setzt, dann kann der Anwender die Textbox auch nicht von Hand ändern.
Wenn du noch ein paar Formatierungen anpasst (SpecialEffekts, Hintergrund), dann sieht auch die Textbox wie ein Label und durch das .Locked = True verhält sie sich für den Anwender auch so (er kann zwar reinklicken und den Wert kopieren, aber nicht ändern)
Gruss Daniel

Anzeige
AW: Change-Event bei Labels -> Textbox statt Label
13.09.2015 22:38:04
Timo
Hi,
hier der Code:
Private Sub UID_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 167 Then
Dim Card_UID As Variant
Card_UID = Me.UID.Value
On Error Resume Next
Me.Label1.Caption = WorksheetFunction.VLookup(Card_UID, ThisWorkbook.Worksheets("Settings"). _
Range("A1:G1048576"), 3, False)
Me.UID.Text = Clear
Me.UID.SetFocus
SendKeys "{BACKSPACE}"
If Err.Number  0 Then Me.Label1.Caption = "Error"
On Error GoTo 0
End If
End Sub
Wenn ich da anschließend mein Makro ranhänge, dann läuft das los, noch bevor das Label mit dem SVerweis gefüllt ist.
Die Variante mit der Textbox habe ich mir auch schon überlegt.
Ich denke, dass das die beste Variante ist.
VG Timo

Anzeige
AW: Change-Event bei Labels -> Textbox statt Label
13.09.2015 22:54:09
Uduuh
Hallo,
sollte doch so gehen:
Private Sub UID_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim vText As Variant
Dim Card_UID As Variant
If KeyAscii = 167 Then
Card_UID = Me.UID.Value
vText = WorksheetFunction.VLookup(Card_UID, ThisWorkbook.Worksheets("Settings"). _
Range("A:C"), 3, False)
If Not IsError(vText) Then
Me.Label1.Caption = vText
Call DasMakro(vText)
Else
Me.Label1.Caption = "Error"
Call DasMakro("Error")
End If
End If
Me.UID.Text = Clear
Me.UID.SetFocus
SendKeys "{BACKSPACE}"
End Sub
Sub DasMakro(vText As Variant)
'mach was
End Sub
Gruß aus’m Pott
Udo

Anzeige
AW: Change-Event bei Labels -> Textbox statt Label
13.09.2015 23:41:42
Daniel
Hi
die Frage ist, ob das Makro auch laufen soll, wenn wenn der Fehler auftritt.
bei einem Change-Event wäre das der Fall.
kleiner Tip nur so am Rande:
Fehlerbehandlungen sollte man vermeiden, vorallem dann, wenn es einfach ist.
in VBA ist es beispielsweise besser, den SVerweis mit 4. Parameter = FALSCH durch .FIND und .OFFSET zu ersetzen.
Um den Fehler zu vermeiden, schreibt man das Ergebnis der .FIND-Funktion zuerst in eine Variable:
dim Zelle as Range
Set Zelle =  ThisWorkbook.Worksheets("Settings").Columns.Find(What:=Card_UID, lookat:=xlwhole)
if Zelle is Nothing then
Label1.Caption = "Error"
Else
Label1.Caption = Zelle.Offset(0, 2).Value
End If
Me.UID.Text = Clear
Me.UID.SetFocus
SendKeys "{BACKSPACE}"
Call DeinMakroWelchesJetztLaufenSoll
wenn das Makro nur laufen muss, wenn er SVerweis erfolgreich war, kannst du den Aufruf in den entsprechenden Teil des IF-Thens verschieben.
Gruss Daniel

Anzeige
AW: Change-Event bei Labels -> Textbox statt Label
14.09.2015 19:00:11
Timo
Hallo ihr beiden,
vielen Dank für Eure Hilfe.
@Uduuh: Dein Code läuft leider nicht.
Hier kommt immer die Fehlermeldung, dass die VLookup-Eigenschaft des WorksheetFunction-Objektes nicht zugeordnet werden kann.
@Daniel: Dein Code läuft, warum auch immer :D
Das Makro wartet hier wirklich, wie gewünscht, bis das Label gefüllt ist. Super!
Aber eine Frage habe ich noch.
Wenn ich den Code richtig deute, dann wird im gesamten Blatt "Settings" nach dem Wert gesucht.
Kann man das noch eingrenzen, dass nur in einem Range gesucht wird (A1:G1048576)?
Danke und einen schönen Abend!
VG Timo

Anzeige
AW: Change-Event bei Labels -> Textbox statt Label
14.09.2015 19:14:47
Daniel
Hi
statt Cells.Find
dann Range("A1:G1048576").Find
oder Range("A:G").Find
oder Columns(1).Resize(, 7).Find
oder Range(Cells(1, 1), cells(1048576,7)).Find
Gru Daniel

AW: Change-Event bei Labels -> Textbox statt Label
14.09.2015 21:28:40
Timo
Hi,
vielen Dank.
Ich werde es morgen mal testen ;)
VG Timo

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige