Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Fehler bei Listbox.Rowsource

Fehler bei Listbox.Rowsource
05.06.2018 11:28:13
Starkl
Sehr geehrte Forum Teilnehmer,
ich bin tatsächlich an ein Problem gestoßen, wo ich mich Frage, ob es sich um einen Programmfehler in Excel handelt - Ich weiß das haben schon viele gedacht und sind eines besseren belehrt worden ... Ich hoffe das werde ich auch.
Bei einem Formularaufruf wird ein darin befindliches Listenfeld mit den Daten aus einer Tabelle befüllt. Wird das Formular das erste mal geöffnet, dann funktioniert das Makro Fehlerfrei. Die Listbox wird mit den Werten aus der Tabelle befüllt.
Beim zweiten Aufruf des Formulars kommt immer eine Fehlermeldung:" Ungültiger Eigenschaftswert. RowSource konnte nicht gesetzt werden. Laufzeitfehler 380"
Beim schließen den Formulars verwende ich bereits "unload me", so dass eigentlich jedesmal exakt der gleiche Ablauf sein müsste....
Anbei der eingekürzte Code:
Private Sub UserForm_Activate()
S = "Stammdaten"
M= “MR” ‘Tabellenblattname
Application.ScreenUpdating = False
Me.LBMengenregulierung.Clear
Me.LBMengenregulierung.ColumnCount = 11
Me.LBMengenregulierung.ColumnHeads = False
Me.LBMengenregulierung.ColumnWidths = "0cm;2cm;7,5cm;1,9cm;2,2cm;2,2cm;2,2cm;2,2cm;2,2cm;2,2cm;  _
_
_
2cm"
Me.LBMengenregulierung.RowSource = ""
'Alle alten Einträge in der Tabelle löschen
Sheets(M).Range("A2:P500").ClearContents
‘Die Tabelle neu mit einer Schleife befüllen
For ZeileS = 3 To 200
'Befüllen der Tabelle
Anweisung
ZeileM = ZeileM + 1
End If
Next
Application.ScreenUpdating = True
Quelle = CStr("'" & M & "'!A2:K" & ZeileM - 1)
FRMMengenregulierung.LBMengenregulierung.RowSource = Quelle
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler bei Listbox.Rowsource
05.06.2018 13:22:28
Daniel
Hi
wie kopiest du deinen Code?
wo kommen die schrägen Hochkommas vor einigen Kommentaren her?
was passiert bei "Anweisung"
Wo ist IF zum END IF in der For-Next-Schleife?
warum programmierst du die Einstellungen der Listbox?
Alle Einstellungen, die fix sind und nicht berechnet werden müssen, kann man auch direkt in die Eigenschaftsliste schreiben.
Außer RowSource könntest du alle Listboxeigenschaften direkt setzen.
warum verwendesst du einmal "ME" und am Schluss dann: "FRMMengenregulierung" um die Userform anzusprechen.
Wenn es die gleiche sind, sollte man auch immer die gleiche Ansprechmethode verwenden.
Gruß Daniel
Anzeige
AW: Fehler bei Listbox.Rowsource
05.06.2018 13:26:37
ChrisL
Hi
Sub t()
m = “MR”
MsgBox m
m = "MR"
MsgBox m
End Sub
Wenn der Debugger anspringt, die Variablen prüfen.
cu
Chris
AW: Fehler bei Listbox.Rowsource
05.06.2018 15:35:56
fcs
Hallo Starkl,
du musst eine Prüfung einbauen, ob in Stammdaten anzuzeigenden Daten gefunden wurden bevor du den Zellbereich der Combobox als Quelle zuweist.
Außerdem sollte die Clear-Methode nicht auf eine List-/Combobox angewendet werden, der ein Zellbereich als Quelle zugewiesen wird.
Der Fehler tritt auf, wenn ZeileM - 1 Null wird.
Da die Daten ab Zeile 2 der Box als Quelle zuweisen willst must du den Zeilenzähler ZeileM prüfen auf
ZeileM - 1 
So wie ich dass sehe musst du auch irgendwo den Startwert von ZeileM auf 2 setzen. Aber das hängt dann davon ab, was sich hinter sich hinter Anzeigen versteckt und wie der AUfbau der Daten in den beiden beiden Blättern ist.
Gruß
Franz
Private Sub UserForm_Activate()
S = "Stammdaten"
M = "MR" 'Tabellenblattname
Application.ScreenUpdating = False
Me.LBMengenregulierung.Clear  'nicht gut für Combobox mit RowSource
Me.LBMengenregulierung.ColumnCount = 11
Me.LBMengenregulierung.ColumnHeads = False
Me.LBMengenregulierung.ColumnWidths = _
"0cm;2cm;7,5cm;1,9cm;2,2cm;2,2cm;2,2cm;2,2cm;2,2cm;2,2cm;2cm"
Me.LBMengenregulierung.RowSource = ""
'Alle alten Einträge in der Tabelle löschen
Sheets(M).Range("A2:P500").ClearContents
'Die Tabelle neu mit einer Schleife befüllen
For ZeileS = 3 To 200
'Befüllen der Tabelle
'Anweisungen
Next
Application.ScreenUpdating = True
'Prüfung ob Stammdaten gefunden wurden
If ZeileM - 1 

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Fehler bei Listbox.Rowsource beheben


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler 380 zu beheben, befolge diese Schritte:

  1. Überprüfe den Code: Stelle sicher, dass du den richtigen Tabellennamen und die richtigen Zellbereiche in deinem VBA-Code verwendest.

    Private Sub UserForm_Activate()
    S = "Stammdaten"
    M = "MR" ' Tabellenblattname
  2. Zeilen zählen: Überprüfe, ob ZeileM korrekt initialisiert wurde und stelle sicher, dass es den erwarteten Wert hat, bevor du es zur RowSource zuweist. Setze ZeileM zu Beginn auf 2.

  3. Daten prüfen: Füge eine Prüfung ein, um sicherzustellen, dass es Daten gibt, bevor du die RowSource der Listbox zuweist.

    If ZeileM - 1 > 0 Then
       Me.LBMengenregulierung.RowSource = "'" & M & "'!A2:K" & ZeileM - 1
    End If
  4. Vermeide die Clear-Methode: Setze die Clear-Methode nicht auf die Listbox, wenn eine RowSource zugewiesen wird. Dies kann ebenfalls zu einem Laufzeitfehler führen.

  5. Formular schließen: Stelle sicher, dass du am Ende des Codes Unload Me verwendest, um das Formular richtig zu schließen.


Häufige Fehler und Lösungen

  • Laufzeitfehler 380: Tritt auf, wenn die RowSource nicht korrekt gesetzt werden kann. Überprüfe, ob der Zellbereich gültig ist.

  • Ungültiger Eigenschaftswert: Dieser Fehler kann auftreten, wenn der Zellbereich leer oder ungültig ist. Stelle sicher, dass du die Anzahl der Zeilen korrekt erfasst.

  • Falsche Verwendung von ME und FRMMengenregulierung: Verwende konsistent die gleiche Referenz für das UserForm, um Verwirrung zu vermeiden.


Alternative Methoden

  • Direktes Setzen der Listbox-Eigenschaften: Anstatt die Listbox-Eigenschaften im Code zu setzen, kannst du viele davon direkt in der Eigenschaftenliste des VBA-Editors festlegen. Das reduziert den Code und mögliche Fehlerquellen.

  • Dynamisches Laden der Daten: Anstatt die Listbox bei jedem Aufruf zu leeren, könntest du die Daten nur hinzufügen, wenn neue Daten verfügbar sind.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die RowSource der Listbox korrekt setzen kannst:

Private Sub UserForm_Activate()
    Dim M As String
    Dim ZeileM As Long

    M = "MR" ' Tabellenblattname
    ZeileM = 2 ' Startwert

    ' Daten sammeln und ZeileM erhöhen
    ' Beispielcode für das Befüllen der Tabelle hier einfügen...

    If ZeileM - 1 > 0 Then
        Me.LBMengenregulierung.RowSource = "'" & M & "'!A2:K" & ZeileM - 1
    End If
End Sub

Tipps für Profis

  • Verwende Debugging-Tools: Nutze die Debugging-Funktion in VBA, um Variablenwerte während der Ausführung zu überprüfen. So kannst du schnell mögliche Fehlerquellen identifizieren.

  • Dokumentiere deinen Code: Kommentiere deinen Code ausführlich, um später leichter verstehen zu können, was jede Zeile bewirken soll.

  • Modularisiere deinen Code: Teile deinen Code in kleinere, wiederverwendbare Subroutinen auf, um die Lesbarkeit und Wartbarkeit zu erhöhen.


FAQ: Häufige Fragen

1. Warum erhalte ich Laufzeitfehler 380? Der Fehler tritt auf, wenn der RowSource nicht korrekt gesetzt werden kann. Überprüfe, ob der Zellbereich gültig ist und ob Daten vorhanden sind.

2. Wie kann ich die Listbox-Eigenschaften effizienter setzen? Statt im Code kannst du viele Listbox-Eigenschaften direkt in der Eigenschaftenliste des VBA-Editors setzen, um die Übersichtlichkeit zu erhöhen.

3. Was mache ich, wenn ich die Daten nicht in die Listbox laden kann? Überprüfe deinen Code auf mögliche Fehlerquellen, insbesondere die Initialisierung von Variablen und die korrekte Nutzung von RowSource.

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