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

„Eigenschaft List konnte nicht abgerufen werden . Ungültiges

Forumthread: „Eigenschaft List konnte nicht abgerufen werden . Ungültiges

„Eigenschaft List konnte nicht abgerufen werden . Ungültiges
20.02.2025 10:28:36
nhey
Moin zusammen,

ich lese hier schon mehr als ein Jahr mit und habe auch schon sehr viele Tipps hier im Forum gefunden die mir weitergeholfen haben, besten Dank hierfür an das erstklassige Forum, Mitglieder und Betreiber.

Jetzt stehe ich allerdings vor einem Problem wo ich einfach nicht weiterkommen. Ich möchte Daten (Zeilen) aus einer Tabelle in einem Formular auswählen und einzelne Zellen auch verändern können. Die Combobox zeigt auch brav die vorhandenen Zeilen an , wenn ich jedoch eine Zeile auswähle bekomme ich einen Laufzeitfehler „Eigenschaft List konnte nicht abgerufen werden . Ungültiges Argument“ Jetzt bin ich der absolute VBA Anfänger und denke das ich hier einen kleinen Denkfehler fabriziert habe… Könnte mir jemand auf die Sprünge helfen ??
Meine Tabelle hat 26 Reihen und etwas über 1000 Zeilen. Der Code vom UserForm schaut so aus:

Option Explicit

Private Sub ComboBox1_Change()
Dim ObCb As Object
If ComboBox1.Value > "" Then
For Each ObCb In Me.Controls
If TypeName(ObCb) = "TextBox" Then
ObCb.Value = Range(ObCb.Tag & ComboBox1.List(ComboBox1.ListIndex, 25))
End If
Next ObCb
End If
End Sub

Private Sub CommandButton1_Click()
If ComboBox1.ListIndex = -1 Then Exit Sub
Dim ObCb As Object
If ComboBox1.Value > "" Then
For Each ObCb In Me.Controls
If TypeName(ObCb) = "TextBox" Then
Range(ObCb.Tag & ComboBox1.List(ComboBox1.ListIndex, 25)) = ObCb.Value
End If
Next ObCb
End If
End Sub

Private Sub UserForm_Initialize()
Dim LoLetzte As Long
Dim Loi As Long
LoLetzte = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row, 65536)
ComboBox1.ColumnCount = 26
ComboBox1.ColumnWidths = "30;30;50;30;30;30;0"
For Loi = 1 To LoLetzte
If Cells(Loi, 1) > "" Then
ComboBox1.AddItem Cells(Loi, 1)
ComboBox1.List(ComboBox1.ListCount - 1, 1) = Cells(Loi, 2)
ComboBox1.List(ComboBox1.ListCount - 1, 2) = Cells(Loi, 3)
ComboBox1.List(ComboBox1.ListCount - 1, 3) = Cells(Loi, 4)
ComboBox1.List(ComboBox1.ListCount - 1, 4) = Cells(Loi, 5)
ComboBox1.List(ComboBox1.ListCount - 1, 5) = Cells(Loi, 6)
ComboBox1.List(ComboBox1.ListCount - 1, 6) = Loi
End If
Next Loi
End Sub
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: „Eigenschaft List konnte nicht abgerufen werden . Ungültiges
20.02.2025 11:20:51
Alwin Weisangler
Hallo,

beschreibe mal wenigstens was passieren soll, wenn du einen Listeneintrag der Combobox auswählst und dieser mit der Textbox übereinstimmt.
Warum/wozu ist die For/Each Schleife wo die Textboxen abgeklappert werden.
Lade am besten den bisherigen Stand mal hoch, damit man feststellen kann, was überhaupt von Nöten ist.

Gruß Uwe
Anzeige
AW: „Eigenschaft List konnte nicht abgerufen werden . Ungültiges
20.02.2025 11:51:54
nhey
Ich möchte im UserForm1 eine Zeile in der Combobox auswählen, einzelne Zellen verändern und die geänderten Zellen in die Tabelle zurückschreiben bzw. aktualisieren.
AW: „Eigenschaft List konnte nicht abgerufen werden . Ungültiges
20.02.2025 12:14:12
Alwin Weisangler
ah,
das funktioniert ganz anders und vor allem recht simpel.
https://www.herber.de/bbs/user/175878.xlsm

Gruß Uwe

Anzeige
AW: „Eigenschaft List konnte nicht abgerufen werden . Ungültiges
20.02.2025 12:41:16
nhey
Vielen lieben Dank Alwin... das hat mir sehr viel weitergeholfen...
AW: „Eigenschaft List konnte nicht abgerufen werden . Ungültiges
20.02.2025 14:17:24
nhey
Eine Frage habe ich noch zu Deinem Beispiel Uwe, wenn ich in den Textboxen eine Änderung eintrage, wie schaffe ich es dann die Änderung zu speichern, also von dem Formular in die Tabelle ?
AW: „Eigenschaft List konnte nicht abgerufen werden . Ungültiges
21.02.2025 10:07:47
Alwin Weisangler
Hallo,

das ist auch ganz simpel. Die Tabelle befindet sich 1 zu 1 in der Combobox.

Wenn du einen Eintrag aus der Liste der Combobox auswählst wird der Listindex (Nummer des Eintrags in der Liste beginnend bei 0) bereitgestellt.
Mit .ListIndex kann man diese Nummer abfragen (siehe Change Ereignisprozedur der Combobox).
Dies kannst du ebenso zur weiteren Berechnung der Zeilennummer heranziehen um in die passende Zeile zu schreiben.

Beispiel:
Du klickst den 1. Datensatz aus der Liste der Combobox an --> Es wird der .ListIndex mit 0 ausgegeben (mit 0 beginnt standartmäßig jeder Indexwert, sofern man nicht mit Option Base 1 am Anfang des Moduls den Index auf 1 erzwingt). Da dies der 1. Eintrag in der Tabelle des Tabellenblattes ist musst du +1 dazu rechnen um in die passende Zeile zu schreiben.

Die Schleife, wie man Werte in die Textboxen bekommt kennst du ja schon.
Um dies in die Tabelle zu bekommen übergibst du dann in einer solchen Schleife die Werte aus der Textbox in die Tabelle:


Private Sub CommandButton1_Click()
Dim i&
With Tabelle1
For i = 1 To 8
.Cells(ComboBox1.ListIndex + 1, i) = Controls("TextBox" & i)
Next i
End With
End Sub

Das sollte erst mal zum Lernen reichen.

Gruß Uwe
Anzeige

Forumthreads zu verwandten Themen

Anzeige