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

Syntax bei variabler RowSource Zuweisung

Forumthread: Syntax bei variabler RowSource Zuweisung

Syntax bei variabler RowSource Zuweisung
05.10.2002 08:49:42
Lutz Weinrich
Hallo allezamme,
möchte die RowSource Eigenschaft einer Listbox dynamisch zuweisen, je nach Länge der Tabelle. Als Variable "lastzell" habe ich die Zeilennummer der ersten leeren Zeile am unteren Ende. Spalte E ist festgelegt. Bastle nun schon 'ne ganze Weile, aber außer immer neuen Fehlermeldungen kommt nichts raus dabei.
Weiß jemand einen Rat?


Dim Bereich As Range
Bereich = Worksheets("Projektdaten").Range("A2:E" & lastCell)
UserForm6.ListBox3.RowSource = Bereich.Address

Danke erstmal
Ciao Lutz

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Syntax bei variabler RowSource Zuweisung
05.10.2002 08:57:47
andre
Hallo Lutz,
gebe es direkt beim code für den rowsorce ein.
Beispiel bei mir:
Range("a1").Select
Selection.CurrentRegion.Select
Zeilen_zahl = Selection.Rows.Count
Range("a1").Select
Application.CutCopyMode = False
' Worksheets("Auswertung").Activate
UserForm1.ListBox1.RowSource = "mdaten1!a3:b" & Zeilen_zahl
gruss andre

Anzeige
Re: Syntax bei variabler RowSource Zuweisung
05.10.2002 10:43:15
Harald K
Hallo Lutz,
ich könnte mir das so vorstellen, wenn ich die richtig verstanden habe

Gruß Harald

;
Anzeige

Infobox / Tutorial

Dynamische Zuweisung der RowSource in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Vergewissere Dich, dass Du die richtige Excel-Version nutzt: Diese Anleitung ist für Excel VBA in Versionen ab 2010 geeignet.

  2. Definiere die Variable für die letzte Zeile: Erstelle eine Variable, die die letzte befüllte Zeile in Deiner Tabelle bestimmt. Beispiel:

    Dim lastCell As Long
    lastCell = Worksheets("Projektdaten").Cells(Rows.Count, "E").End(xlUp).Row
  3. Setze die RowSource der ListBox: Weise die RowSource dynamisch zu, indem Du die Adresse des Bereichs an die ListBox übergibst:

    UserForm6.ListBox3.RowSource = "Projektdaten!A2:E" & lastCell
  4. Führe das Makro aus: Stelle sicher, dass Dein Makro korrekt ausgeführt wird, um die ListBox mit den aktuellen Daten zu füllen.


Häufige Fehler und Lösungen

  • Fehler: Ungültige Zeilenquelle: Achte darauf, dass die angegebenen Zelladressen korrekt sind und dass die Tabelle existiert. Überprüfe, ob der Name der Tabelle und der Zellenbereich richtig geschrieben sind.

  • Lösung: Verwende .Address in Kombination mit .Range, um die korrekte Adresse zu erhalten. Beispiel:

    Dim Bereich As Range
    Set Bereich = Worksheets("Projektdaten").Range("A2:E" & lastCell)
    UserForm6.ListBox3.RowSource = Bereich.Address
  • Fehler: ListBox bleibt leer: Dies kann vorkommen, wenn die letzte Zeile keine Daten enthält. Überprüfe, ob lastCell den erwarteten Wert hat.


Alternative Methoden

Eine alternative Methode zur dynamischen Zuweisung der RowSource könnte die Verwendung von Named Ranges sein. So kannst Du die Datenquelle als benannten Bereich definieren und diesen dann in der RowSource verwenden. Beispiel:

UserForm6.ListBox3.RowSource = "Projektdaten!MeinBereich"

Praktische Beispiele

Hier sind einige praktische Beispiele für die Nutzung der RowSource in Excel VBA:

  1. Beispiel für die Zuweisung einer festen Quelle:

    UserForm6.ListBox3.RowSource = "Projektdaten!A2:A10"
  2. Dynamische Zuweisung basierend auf der Anzahl der Einträge:

    Dim Zeilen_zahl As Long
    Zeilen_zahl = Worksheets("Projektdaten").Cells(Rows.Count, "A").End(xlUp).Row
    UserForm6.ListBox3.RowSource = "Projektdaten!A2:A" & Zeilen_zahl

Tipps für Profis

  • Nutze Fehlerbehandlung: Implementiere On Error Resume Next, um Fehler während der Ausführung zu vermeiden und gezielt zu behandeln.

  • Optimierung: Vermeide das ständige Aktivieren von Arbeitsblättern. Du kannst die RowSource auch setzen, ohne das Arbeitsblatt zu aktivieren, was die Ausführungsgeschwindigkeit erhöht.

  • Verwende VBA-Funktionen: Um die Leistung zu verbessern, kannst Du auch Funktionen wie Application.WorksheetFunction.CountA nutzen, um die Anzahl der nicht-leeren Zellen zu ermitteln.


FAQ: Häufige Fragen

1. Wie kann ich die RowSource für mehrere ListBoxen gleichzeitig ändern?
Du kannst eine Schleife verwenden, um die RowSource aller ListBoxen in Deinem UserForm zu aktualisieren.

2. Was mache ich, wenn die ListBox keine Daten anzeigt, obwohl der Bereich korrekt ist?
Überprüfe die Sichtbarkeit der ListBox und stelle sicher, dass die Daten in dem angegebenen Bereich tatsächlich vorhanden sind.

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