Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Label Caption ändern

Label Caption ändern
13.06.2019 12:10:17
Michael
Hallo,
ich habe eine UserForm erstellt und in dieser ein Label, das seine Bezeichnung (Caption) aus einer Zelle bekommt, so weit so gut. Nun soll über einen Button die Bezeichnung eine Zeile weiter gehen, also sozusagen die nächste Zeile einer Datenbank aufrufen. Ich habe es mit einer For - next Schleife probiert, da rattert es aber nur bis zum Ende durch, ohne Zwischenhalt.
Private Sub CommandButton1_Click()
Dim i As Long
letztezeile = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To letztezeile
i = i + 1
Bezeichnung.Caption = Range("B" & i).Value
Next
'UserForm1.Repaint
End Sub

Ich hoffe es kann mir jemand helfen.
Grüße
Michael
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Label Caption ändern
13.06.2019 12:19:59
Rudi
Hallo,
geht zwar auch eleganter, aber ...
Private Sub CommandButton1_Click()
Dim i As Long
letztezeile = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To letztezeile
if bezeichnung.Caption=cells(i,2) then
Bezeichnung.Caption = cells(i+1,2).Value
exit for
end if
Next
'UserForm1.Repaint
End Sub
Gruß
Rudi
Anzeige
AW: Label Caption ändern
13.06.2019 12:25:21
Michael
Hallo Rudi,
eleganter ist immer schöner, ich würde ja gerne mehr lernen. Deine Version läuft die Zeilen nicht alle nacheinander ab. Es startet immer wieder nach ca. fünf (mal mehr mal weniger) Klicks neu.
AW: Label Caption ändern
13.06.2019 12:45:05
Michael
Ich habe den Grund für das Springen nach 5 Zeilen gefunden. In der Spalte können die gleichen Namen auftauchen und dann fängt es wieder oben an.
Anzeige
AW: Label Caption ändern
13.06.2019 12:59:02
Werner
Hallo Michael,
oder so:
Private Sub CommandButton1_Click()
Dim loLetzte As Long
loLetzte = Cells(Rows.Count, 2).End(xlUp).Row
If Me.Label1.Tag = loLetzte Then
Me.Label1.Tag = 1
Me.Label1.Caption = Range("B" & Me.Label1.Tag)
Else
Me.Label1.Tag = Me.Label1.Tag + 1
Me.Label1.Caption = Range("B" & Me.Label1.Tag)
End If
End Sub
Wenn der letzte Eintrag erreicht ist, fängt er wieder von vorne an.
Gruß Werner
Anzeige
was vergessen
13.06.2019 14:06:12
Werner
Hallo Michael,
etwas kürzer und vergessen, dass du natürlich im Initialize-Ereignis der Userform den Tag setzen mußt.
Private Sub CommandButton1_Click()
Dim loLetzte As Long
loLetzte = Cells(Rows.Count, 2).End(xlUp).Row
If Me.Label1.Tag = loLetzte Then
Me.Label1.Tag = 1
Else
Me.Label1.Tag = Me.Label1.Tag + 1
End If
Me.Label1.Caption = Range("B" & Me.Label1.Tag)
End Sub
Private Sub UserForm_Initialize()
Me.Label1.Tag = 1
Me.Label1.Caption = Cells(1, 2)
End Sub
Gruß Werner
Anzeige
AW: Label Caption ändern
13.06.2019 12:51:29
Rudi
Hallo,
dann versuch das:
Private Sub CommandButton1_Click()
Dim rng As Range
Set rng = Columns(2).Find(what:=Bezeichnung.Caption, lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then Bezeichnung.Caption = rng.Offset(1)
End Sub
Gruß
Rudi
Anzeige
AW: Label Caption ändern
13.06.2019 15:24:31
Daniel
Hi
mal als Ansatz:
verwende anstelle des Labels eine Listbox und schreibe die Adresse der verknüpften Zelle in die Eigenschaft ROWSOURCE, am besten in der Form 'Tabelle1'!A1
jetzt wird diese Zelle in der Listbox angezeigt.
Wenn du die Listbox etwas umformatierst (SpecialEffects), sieht sie auch aus wie ein Label.
wenn du jetzt eine Zeile tiefer willst, geht das einfach beispielsweise so:
dim Zelle as Range
set Zelle = Range(Listbox1.RowSource).Offset(1, 0)
Listbox1.RowSource = "'" & Zelle.Worksheet.name & "'!" & Zelle.address
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Label Caption ändern in Excel VBA


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne Excel und erstelle eine UserForm. Füge ein Label (z.B. Label1) und einen CommandButton hinzu.

  2. Data Source vorbereiten: Stelle sicher, dass du eine Datenquelle in deinem Excel-Arbeitsblatt hast. Beispielsweise in Spalte B.

  3. VBA-Code implementieren: Öffne den VBA-Editor (Alt + F11) und füge den folgenden Code in das UserForm ein:

    Private Sub CommandButton1_Click()
       Dim loLetzte As Long
       loLetzte = Cells(Rows.Count, 2).End(xlUp).Row
       If Me.Label1.Tag = loLetzte Then
           Me.Label1.Tag = 1
       Else
           Me.Label1.Tag = Me.Label1.Tag + 1
       End If
       Me.Label1.Caption = Range("B" & Me.Label1.Tag)
    End Sub
    
    Private Sub UserForm_Initialize()
       Me.Label1.Tag = 1
       Me.Label1.Caption = Cells(1, 2)
    End Sub

    Dieser Code sorgt dafür, dass die Caption des Labels beim Klicken des Buttons aktualisiert wird.


Häufige Fehler und Lösungen

  • Problem: Label springt nach einigen Klicks zurück.

    • Lösung: Das passiert, wenn in der Datenquelle doppelte Werte vorhanden sind. Stelle sicher, dass jeder Wert in der Datenquelle eindeutig ist.
  • Problem: Der Button aktualisiert das Label nicht.

    • Lösung: Überprüfe, ob das UserForm korrekt initialisiert wurde. Nutze den UserForm_Initialize-Ereignis, um das Label korrekt zu setzen.

Alternative Methoden

  • Verwendung einer ListBox: Anstelle eines Labels kannst du eine ListBox verwenden. Setze die RowSource-Eigenschaft auf die Zelle, die du anzeigen möchtest. Der Code könnte folgendermaßen aussehen:

    Dim Zelle As Range
    Set Zelle = Range(ListBox1.RowSource).Offset(1, 0)
    ListBox1.RowSource = "'" & Zelle.Worksheet.Name & "'!" & Zelle.Address
  • VBA-Funktion zur Änderung der Label Caption: Du könntest auch eine separate Funktion erstellen, die vba change label text verwendet, um das Label zu aktualisieren.


Praktische Beispiele

  1. Einfaches Label mit dynamischer Caption:

    Private Sub CommandButton1_Click()
       Label1.Caption = "Aktuelle Zeile: " & Me.Label1.Tag
    End Sub
  2. Label Caption basierend auf einem Suchbegriff:

    Private Sub CommandButton1_Click()
       Dim rng As Range
       Set rng = Columns(2).Find(what:=Label1.Caption, lookat:=xlWhole)
       If Not rng Is Nothing Then
           Label1.Caption = rng.Offset(1, 0).Value
       End If
    End Sub

Tipps für Profis

  • Verwende Me.Label1.Caption: Damit kannst du dynamisch auf das Label zugreifen, ohne es vorher zu benennen.

  • Tag-Eigenschaft nutzen: Setze die Tag-Eigenschaft des Labels, um den aktuellen Index zu speichern. So kannst du die Navigation durch die Datenquelle steuern.

  • Repaint verwenden: Verwende UserForm1.Repaint, um sicherzustellen, dass die UserForm aktualisiert wird, nachdem Änderungen vorgenommen wurden.


FAQ: Häufige Fragen

1. Wie ändere ich die Caption eines Labels in einer UserForm? Um die Caption eines Labels zu ändern, kannst du den Code Label1.Caption = "Neuer Text" verwenden, wo Label1 der Name deines Labels ist.

2. Was mache ich, wenn mein Label nicht aktualisiert wird? Stelle sicher, dass der Code im CommandButton_Click-Ereignis korrekt ist und dass du die UserForm initialisiert hast. Überprüfe auch die Datenquelle auf mögliche Probleme.

3. Kann ich die Caption eines Labels auf einen Zellwert setzen? Ja, du kannst die Caption eines Labels auf einen Zellwert setzen, indem du Label1.Caption = Range("A1").Value verwendest, wobei A1 die Zelle ist, deren Wert du verwenden möchtest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige