Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1844to1848
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler bei List Index

Laufzeitfehler bei List Index
24.08.2021 09:37:32
Daniel
Hallo :)
ich hab hier einen Programmcode und wollte diesen um die Textbox17 erweitern. Allerdings wenn ich die Textbox17 einpflege laufe ich in einen Laufzeitfehler:
Laufzeitfehler "380": Eigenschaft liste konnte nicht gesetzt werden. Ungültiger eigenschaftswert.
Weiß vielleicht jemand weiter?
LG
Daniel

Private Sub ComboBox1_Change()
With ComboBox1
TextBox1.Text = .List(.ListIndex, 0)
TextBox2.Text = .List(.ListIndex, 1)
TextBox3.Text = .List(.ListIndex, 2)
TextBox15.Text = .List(.ListIndex, 3)
TextBox14.Text = .List(.ListIndex, 4)
TextBox7.Text = .List(.ListIndex, 5)
TextBox4.Text = .List(.ListIndex, 6)
TextBox5.Text = .List(.ListIndex, 7)
TextBox8.Text = .List(.ListIndex, 8)
TextBox10.Text = .List(.ListIndex, 9)
TextBox17.Text = .List(.ListIndex, 10)
End With
End Sub
Private Sub UserForm_Initialize()
Dim objCell As Range
Dim strFirsAddress As String
Cells(1, 1).Sort _
Key1:=Cells(2, 20), Order1:=xlAscending, _
Key2:=Cells(2, 17), Order2:=xlAscending, _
key3:=Cells(2, 18), order3:=xlAscending, _
Header:=xlYes
Dim AnzahlGes As Integer
With Box1
.AddItem "1 - Grün"
.AddItem "2 - Gelb"
.AddItem "3 - Rot"
.AddItem "4 - Weiß"
End With
With Box2
.AddItem "Name1"
.AddItem "Name2"
.AddItem "Nicht Relevant"
End With
AnzahlLeer = AnzahlZeilen(Worksheets("Tabelle16"), "S:S")
AnzahlGes = AnzahlZeilen(Worksheets("Tabelle16"), "A:A")
AnzahlLeer = AnzahlGes - AnzahlLeer
Label17.Caption = "Arbeitsvorrat " & AnzahlLeer
Set mobjCollection = New Collection
With Worksheets("Tabelle16")
For Each objCell In .Range(.Cells(2, 19), .Cells(.Rows.Count, 19))
If Not IsEmpty(objCell.Value) And IsEmpty(objCell.Offset(0, 3)) Then
TextBox1.Text = objCell.Offset(0, -18).Value
TextBox2.Text = objCell.Offset(0, -17).Value
TextBox3.Text = objCell.Offset(0, 0).Value
TextBox15.Text = objCell.Offset(0, -12).Value
TextBox14.Text = objCell.Offset(0, 2).Value
TextBox7.Text = objCell.Offset(0, -4).Value
TextBox4.Text = objCell.Offset(0, -8).Value
TextBox5.Text = objCell.Offset(0, -1).Value
TextBox8.Text = objCell.Offset(0, -15).Value
TextBox10.Text = objCell.Offset(0, -16).Value
TextBox17.Text = objCell.Offset(0, 4).Value
Box1.Text = objCell.Offset(0, 1).Value
mlngRow = objCell.Row
Call mobjCollection.Add(Item:=mlngRow)
Exit For
End If
Next
End With
With ComboBox1
.ColumnCount = 25
.ColumnWidths = "80;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0" 'Soviel 0en wie abgefragte Spalten
End With
Set objCell = Worksheets("Tabelle16").Columns(20).Find(What:="4 - Weiß", After:=Worksheets("Tabelle16").Cells(Worksheets("Tabelle16").Rows.Count, 20), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) 'hier auf Spalte 20 bezogen
If Not objCell Is Nothing Then 'hier auf Spalte 20 bezogen
strFirsAddress = objCell.Address
Do
With ComboBox1
.AddItem objCell.Offset(0, -19).Value
.List(.ListCount - 1, 1) = objCell.Offset(0, -18).Value
.List(.ListCount - 1, 2) = objCell.Offset(0, 0).Value
.List(.ListCount - 1, 3) = objCell.Offset(0, -13).Value
.List(.ListCount - 1, 4) = objCell.Offset(0, 1).Value
.List(.ListCount - 1, 5) = objCell.Offset(0, -5).Value
.List(.ListCount - 1, 6) = objCell.Offset(0, -9).Value
.List(.ListCount - 1, 7) = objCell.Offset(0, -2).Value
.List(.ListCount - 1, 8) = objCell.Offset(0, -16).Value
.List(.ListCount - 1, 9) = objCell.Offset(0, -17).Value
.List(.ListCount - 1, 10) = objCell.Offset(0, 3).Value
End With
Set objCell = Worksheets("Tabelle16").Columns(20).FindNext(After:=objCell)
Loop Until objCell.Address = strFirsAddress
Set objCell = Nothing
End If
End Sub

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler bei List Index
24.08.2021 10:03:47
Rudi
Hallo,
du kannst einer Listbox per AddItem max. 10 Spalten hinzufügen. Du hast aber 11.
Gruß
Rudi
AW: Laufzeitfehler bei List Index
24.08.2021 10:06:36
Daniel
Hallo Rudi,
Kann ich das irgendwie erhöhen?
oder irgendwie trennen(also einmal 7 und einmal 4 zum beispiel) und zusammenfügen?
LG
Daniel
AW: Laufzeitfehler bei List Index
24.08.2021 10:12:27
Rudi
du kannst ein Array mit allen Funden erstellen und dieses der List-Eigenschaft der Listbox zuweisen.
Gruß
Rudi
AW: Laufzeitfehler bei List Index
24.08.2021 10:14:03
Daniel
Hallo Rudi,
Könntest du mir da einmal helfen wie das funktioniert am beispiel meines codes?
Habe das leider noch nie gemacht.
wäre echt super!
Danke dir schon mal :)
LG
Daniel
AW: Laufzeitfehler bei List Index
24.08.2021 10:30:37
Rudi
eine Möglichkeit:

Private Sub UserForm_Initialize()
Dim objCell As Range
Dim strFirstAddress As String
Dim objList As Object
Set objList = CreateObject("scripting.dictionary")
Cells(1, 1).Sort _
Key1:=Cells(2, 20), Order1:=xlAscending, _
Key2:=Cells(2, 17), Order2:=xlAscending, _
key3:=Cells(2, 18), order3:=xlAscending, _
Header:=xlYes
Dim AnzahlGes As Integer
With Box1
.AddItem "1 - Grün"
.AddItem "2 - Gelb"
.AddItem "3 - Rot"
.AddItem "4 - Weiß"
End With
With Box2
.AddItem "Name1"
.AddItem "Name2"
.AddItem "Nicht Relevant"
End With
AnzahlLeer = AnzahlZeilen(Worksheets("Tabelle16"), "S:S")
AnzahlGes = AnzahlZeilen(Worksheets("Tabelle16"), "A:A")
AnzahlLeer = AnzahlGes - AnzahlLeer
Label17.Caption = "Arbeitsvorrat " & AnzahlLeer
Set mobjCollection = New Collection
With Worksheets("Tabelle16")
For Each objCell In .Range(.Cells(2, 19), .Cells(.Rows.Count, 19))
If Not IsEmpty(objCell.Value) And IsEmpty(objCell.Offset(0, 3)) Then
TextBox1.Text = objCell.Offset(0, -18).Value
TextBox2.Text = objCell.Offset(0, -17).Value
TextBox3.Text = objCell.Offset(0, 0).Value
TextBox15.Text = objCell.Offset(0, -12).Value
TextBox14.Text = objCell.Offset(0, 2).Value
TextBox7.Text = objCell.Offset(0, -4).Value
TextBox4.Text = objCell.Offset(0, -8).Value
TextBox5.Text = objCell.Offset(0, -1).Value
TextBox8.Text = objCell.Offset(0, -15).Value
TextBox10.Text = objCell.Offset(0, -16).Value
TextBox17.Text = objCell.Offset(0, 4).Value
Box1.Text = objCell.Offset(0, 1).Value
mlngRow = objCell.Row
Call mobjCollection.Add(Item:=mlngRow)
Exit For
End If
Next
End With
With ComboBox1
.ColumnCount = 25
.ColumnWidths = "80;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0" 'Soviel 0en wie abgefragte Spalten
End With
Set objCell = Worksheets("Tabelle16").Columns(20).Find(What:="4 - Weiß", After:=Worksheets("Tabelle16").Cells(Worksheets("Tabelle16").Rows.Count, 20), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) 'hier auf Spalte 20 bezogen
If Not objCell Is Nothing Then 'hier auf Spalte 20 bezogen
strFirstAddress = objCell.Address
Do
objList(objCell.Address) = Array(objCell.Offset(0, -19).Value, _
objCell.Offset(0, -18).Value, objCell.Offset(0, 0).Value, _
objCell.Offset(0, -13).Value, objCell.Offset(0, 1).Value, _
objCell.Offset(0, -5).Value, objCell.Offset(0, -9).Value, _
objCell.Offset(0, -2).Value, objCell.Offset(0, -16).Value, _
objCell.Offset(0, -17).Value, objCell.Offset(0, 3).Value)
Set objCell = Worksheets("Tabelle16").Columns(20).FindNext(After:=objCell)
Loop Until objCell.Address = strFirstAddress
Set objCell = Nothing
End If
If objList.Count Then
ComboBox1.List = Application.Transpose(Application.Transpose(objList.items))
End If
End Sub
Gruß
Rudi
Anzeige
AW: Laufzeitfehler bei List Index
24.08.2021 10:40:59
Daniel
Hallo Rudi,
Super danke dir es klappt!
noch ein Thema vllt offtopic. Weißt du wie ich einen Hypterlink in eine Userform bekomme?
In Textbox14 sollte eigentlich ein Hyperlink angezeigt werden, allerdings wird dort nur der Text und nicht der Link angezeigt.
LG
Daniel
AW: Laufzeitfehler bei List Index
24.08.2021 12:00:58
Rudi
Hallo,
dem musst du dann z.B. so folgen:

Private Sub TextBox14_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ActiveWorkbook.FollowHyperlink (TextBox14.Text)
End Sub

AW: Laufzeitfehler bei List Index
24.08.2021 13:00:32
Daniel
Hallo Rudi,
mir ist gerade aufgefallen, wenn ich in meinem Dropdown eine Zeile auswähle ändert er nicht mehr die TextBoxen wie in der Ursprünglichen Programmierung.
LG
Daniel
Anzeige
AW: Laufzeitfehler bei List Index
24.08.2021 13:10:15
Daniel
ich habe das jetzt so versucht:
Allerdings laufe ich hier auch in einen Laufzeitfehler 450: Falsche Anzahl an Argumenten

Set objList = CreateObject("scripting.dictionary")
objList.Add TextBox1.Text
objList.Add TextBox2.Text
objList.Add TextBox3.Text
objList.Add TextBox15.Text
objList.Add TextBox14.Text
objList.Add TextBox7.Text
objList.Add TextBox4.Text
objList.Add TextBox5.Text
objList.Add TextBox8.Text
objList.Add TextBox10.Text
objList.Add TextBox15.Text

AW: Laufzeitfehler bei List Index
24.08.2021 14:45:17
Daniel
Hallo Rudi,
wie kann ich denn meine Textboxen befüllen wenn ich das im dropdown auswähle?
Add ist ja falsch und Item denke ich ist es auch nicht.
ab ich muss ja Set objList = CreateObject("scripting.dictionary") irgendwie sagen, dass er diese Textboxen wählen soll oder?
sonst weiß er ja nicht was er hier machen soll? dafür muss ich ja das Array deffinieren? oder bin ich grad auf dem komplett falschen weg?

objList(objCell.Address) = Array(objCell.Offset(0, -19).Value, _
objCell.Offset(0, -18).Value, objCell.Offset(0, 0).Value, _
objCell.Offset(0, -13).Value, objCell.Offset(0, 1).Value, _
objCell.Offset(0, -5).Value, objCell.Offset(0, -9).Value, _
objCell.Offset(0, -2).Value, objCell.Offset(0, -16).Value, _
objCell.Offset(0, -17).Value, objCell.Offset(0, 3).Value)
also kurz zur erklärung:
Ich habe eine Datenbankabfrage und möchte diese bearbeiten.
dafür habe ich mir Userforms gebastelt und in den Textboxen lasse ich mir relevante Infos anzeigen. In dem Dropdown sind nochmal Zeilen vorhanden die es sich lohnt 2x anzusehen. nur wenn ich dann ins dropdown klicke (welches richtig befüllt ist) tut sich an den Textboxen nichts.
Ich kann dir auch gerne eine Beispieldatei hochladen wenn das besser ist?
Sry für das viele Rumgefrage Rudi und danke für die Hilfe!
LG
Daniel
Anzeige
Beispieldatei
24.08.2021 14:59:07
Rudi

Ich kann dir auch gerne eine Beispieldatei hochladen wenn das besser ist?
auf jeden Fall.
AW: Beispieldatei
24.08.2021 15:17:57
Daniel
Hallo Rudi,
hier ist die Beispieldatei, wegen geheimhaltung leider etwas abgespeckt.
Die Relevanten userformen sind 1 und 2
also ich suche nach 4 - Weiß und diese werden im Dropdown(Befindet sich im Feld navigation) angezeigt. Und wenn ich diese Anklicke sollten die Zeile auch in dem Feld Infos angezeigt werden.
https://www.herber.de/bbs/user/147775.xlsm
LG
Daniel
AW: Beispieldatei
24.08.2021 20:23:58
ralf_b
Und warum hast du das combobox1_change auskommentiert? Das macht doch das was du willst.
Du würdest dir ne Menge Arbeit ersparen wenn du dich entscheidest, ob du die Werte aus der Combobx.list in die Textboxen einliest oder aus den Tabellenzellen. Aber einmal dies und einmal das, ist sicher eher verwirrend als überschaubar.
gruß
rb
Anzeige
AW: Beispieldatei
24.08.2021 21:06:47
Daniel
Hallo Ralf,
ja genau die macht das was ich möchte nur habe ich jetzt mehr als 10 einträge und List index geht nur bis 10 oder?
nur ich verstehe nicht wie ich das dann vom List index umschreibe zu dem array...
ich habe mir alles mehr oder weniger über foren etc beigebracht deswegen ist es wahrscheinlich für einen profi wie dich nicht perfekt :D
Wenn ich das jetzt so schreibe kommt Private Sub oder Function nicht definiert, wenn ich etwas aus dem dropdown auswähle.

Private Sub ComboBox1_Change()
With ComboBox1
Dim objCell As Range
objList(objCell.Address) = Array(TextBox1.Text = objCell.Offset(0, -19).Value, _
TextBox2.Text = objCell.Offset(0, -18).Value, TextBox3.Text = objCell.Offset(0, 0).Value, _
TextBox15.Text = objCell.Offset(0, -13).Value, TextBox14.Text = objCell.Offset(0, 1).Value, _
TextBox7.Text = objCell.Offset(0, -5).Value, TextBox4.Text = objCell.Offset(0, -9).Value, _
TextBox5.Text = objCell.Offset(0, -2).Value, TextBox8.Text = objCell.Offset(0, -16).Value, _
TextBox10.Text = objCell.Offset(0, -17).Value)
End With
End Su
b
LG
Daniel
Anzeige
AW: Beispieldatei
25.08.2021 17:44:57
ralf_b
ähm nein,
ich nix Profi.
add item geht bis 10 ,glaube ich. aber object.list = Array oder Range geht bis sonst wo.
rowsource würde auch gehen, aber dann ist die Tabelle fest mit der Liste verbunden.
deine Variante mit der Collection habe so noch nicht gesehen. Gibts für die Variante nen bestimmten Grund?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige