Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Label auslesen

Label auslesen
12.05.2006 09:04:11
Bernd
Hallo,
habe im Moment eine Lücke: Ich möchte in einem Click-Ereignis eines labels dessen Name bzw. Caption erhalten (Cption ist ein Zzahlenwert, den ich einlesen und mit Rabatt versehen zurückschreiben will).Das activecontol ist es nicht. Wie gelingt mir mein Vorhaben.
Danke Euch für die Hilfe
Grüße bern
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Label auslesen
12.05.2006 09:51:04
Andi
Hi,
meinst Du dies?

Private Sub Label1_Click()
Label1.Caption = Label1.Caption * 0.9
End Sub

Schönen Gruß,
Andi
AW: Label auslesen
12.05.2006 09:59:38
Bernd
Hi Andi,
danke für Deine antwort. Meine Frage war nicht exact, entschuldige! Da ich ca. 30 label in dem userform habe, möchte ich im Click-Ereignis den Nemen es soeben angeklickten Labels erhalten. Dann übergebe ich diesen an eine Sub usw.
Vielleicht hast Du dazu eine Antwort.
Anzeige
AW: Label auslesen
12.05.2006 10:03:57
Andi
Hi,
Du möchtest also so eine Art universelles Click-Ereignis für alle labels, oder?
Sorry, dazu fällt mir grad nix ein; klingt a bisserl nach Klassen-Modul. Meine Kenntnis über Klassenmodule beschränkt sich allerdings darauf, dass ich weiss, dass es sie gibt.
Ich stell die Frage mal auf offen.
Viel Erfolg,
Andi
Anzeige
AW: Label auslesen
12.05.2006 10:41:02
Bernd
Danke Paulchen,
ja die Sachsen, topp! Danke, Ich bin Thüringer und habe in Leipzig 20 jahre gewohnt. Gruß in die Heimat!
Gruß Bernd
;
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: Label auslesen und verarbeiten


Schritt-für-Schritt-Anleitung

Um den Namen oder die Caption eines Labels in einem UserForm in Excel VBA auszulesen, kannst du ein universelles Click-Ereignis für alle Labels erstellen. Hier ist eine Schritt-für-Schritt-Anleitung, wie du dies umsetzen kannst:

  1. Erstelle ein Klassenmodul:

    • Öffne den VBA-Editor (ALT + F11).
    • Wähle "Einfügen" > "Klassenmodul".
    • Benenne das Klassenmodul beispielsweise LabelClass.
  2. Füge folgenden Code in das Klassenmodul ein:

    Public WithEvents LabelControl As MSForms.Label
    
    Private Sub LabelControl_Click()
       MsgBox "Du hast das Label mit der Caption '" & LabelControl.Caption & "' angeklickt."
    End Sub
  3. Erstelle eine Instanz des Klassenmoduls in deinem UserForm:

    • Gehe zu deinem UserForm und füge folgenden Code hinzu:
      
      Dim LabelHandlers() As LabelClass

    Private Sub UserForm_Initialize() Dim i As Integer Dim ctrl As Control ReDim LabelHandlers(Me.Controls.Count - 1)

    For i = 0 To Me.Controls.Count - 1 Set ctrl = Me.Controls(i) If TypeName(ctrl) = "Label" Then Set LabelHandlers(i) = New LabelClass Set LabelHandlers(i).LabelControl = ctrl End If Next i End Sub

  4. Teste dein UserForm:

    • Starte das UserForm, und wenn du auf ein Label klickst, wird die Caption des Labels in einer MsgBox angezeigt.

Häufige Fehler und Lösungen

  • Fehler: "Objektvariable nicht gesetzt"

    • Lösung: Stelle sicher, dass alle Labels im UserForm korrekt referenziert werden und dass das Klassenmodul korrekt instanziiert wurde.
  • Problem: Die Caption wird nicht angezeigt

    • Lösung: Überprüfe, ob die Labels tatsächlich Klick-Ereignisse haben und dass der Code im Klassenmodul richtig verknüpft ist.

Alternative Methoden

Eine alternative Methode, um die Caption eines Labels auszulesen, besteht darin, die MouseDown-Ereignisse der Labels direkt zu verwenden. Dies ist jedoch weniger flexibel, wenn du viele Labels hast. Der Klassenmodul-Ansatz ist die empfohlene Methode.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du mit dem oben genannten Code arbeiten kannst:

  1. Erstelle in deinem UserForm drei Labels.
  2. Stelle sicher, dass sie im Eigenschaftenfenster unterschiedliche Captions haben, z.B. "Label 1", "Label 2", "Label 3".
  3. Wenn du jetzt auf eines dieser Labels klickst, siehst du die entsprechende Caption in der MsgBox.

Tipps für Profis

  • Nutze die Caption-Eigenschaft, um dynamisch Werte zu setzen oder zu ändern, wie z.B. Rabatte.
  • Experimentiere mit anderen Steuerelementen, wie z.B. Buttons oder TextBoxen, indem du ähnliche Techniken verwendest.
  • Dokumentiere deinen Code gut, insbesondere wenn du Klassenmodule verwendest, da dies die Wartung erleichtert.

FAQ: Häufige Fragen

1. Frage Wie kann ich die Caption der Labels ändern, wenn ich sie klicke?

Antwort: Du kannst die Caption direkt im LabelControl_Click-Ereignis ändern, indem du LabelControl.Caption = "Neuer Wert" setzt.

2. Frage Muss ich für jede Excel-Version etwas anderes beachten?

Antwort: Der gegebene Code sollte in den meisten modernen Versionen von Excel (ab Excel 2007) funktionieren. Bei älteren Versionen kann es jedoch Unterschiede in der Unterstützung von UserForms geben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige