Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Listbox liest nicht alle Spalten ein
#1
Hallo liebe Experten,

ich habe eine Datei, da kommt bei der Spalte 19 der Fehler
Laufzeitfehler -2147024809 (80070057) -
Eigenschaft List konnte nicht abgerufen werden. Ungültiges Argument.

PHP-Code:
Private Sub ListBox1_Click()   'Einlesen der Stadt
     With UserForm1
          .Stadt_R = .ListBox1.List(ListBox1.ListIndex, 0)                                 '
A
          
.Land_R = .ListBox1.List(ListBox1.ListIndex1)                                  'B
          .BG_R = Format(.ListBox1.List(ListBox1.ListIndex, 2), "0")                       '
C
          
.BM_R Format(.ListBox1.List(ListBox1.ListIndex3), "0")                       'D
          .BS_R = Format(.ListBox1.List(ListBox1.ListIndex, 4), "0")                       '
E
          
.Breite_R Format(.ListBox1.List(ListBox1.ListIndex5), "0")                   'F
          .LG_R = Format(.ListBox1.List(ListBox1.ListIndex, 6), "0")                       '
G
          
.LM_R Format(.ListBox1.List(ListBox1.ListIndex7), "0")                       'H
          .LS_R = Format(.ListBox1.List(ListBox1.ListIndex, 8), "0")                       '
I
          
.Länge_R Format(.ListBox1.List(ListBox1.ListIndex9), "0")                    'J
          .Region = Format(.ListBox1.List(ListBox1.ListIndex, 13), "0")                    '
N
          Worksheets
("Entfernungen").Range("R1") = .ListBox1.List(ListBox1.ListIndex10)
          Worksheets("Entfernungen").Range("S1") = .ListBox1.List(ListBox1.ListIndex11)
          Worksheets("Entfernungen").Range("S3") = .ListBox1.List(ListBox1.ListIndex18)
          .Karte_L = .ListBox1.List(ListBox1.ListIndex19)
     End With 

Steht in der letzten Zeile des Code eine 18, gibt es keinen Fehler.
PHP-Code:
Private Sub UserForm_Activate()
   With ListBox1
     
.ColumnCount 32
   End With
End Sub 

Es gibt keine Leerspalten und nicht mal eine einzige leere Zelle von A bis T.

Das merkwürdige ist, dass ich in einer anderen Datei auch eine Listbox habe, die sogar 125 Spalten einliest, ohne Fehler.
Ich habe gegoogelt ohne Ende, kann aber dazu keine Lösung finden.

Weiß jemand woran das liegen könnte?
Antworten Top
#2
Moin!
Die columnCount Eigenschaft legt nur fest, wieviele Spalten angezeigt werden.  Wenn in list nicht genügend Werte / Spalten sind, läufst du in den Fehler.
Wie liest du den die Werte in die Listbox ein?
Und noch ein Hinweis. Der Index in List startet immer bei 0. Die Spalte 19 in List(,19) ist also die 20 im Tabellenblatt - wenn du eine Range ab A übergibst.
VG
PS: Falls du wissen willst, wie viele Spalten deine LIst hat, das mal am Anfang einbauen.
Code:
MsgBox UBound(Me.ListBox1.List, 2) + 1
Antworten Top
#3
Hallo,

die ColumnCount Eigenschaft steht auf 1. Genau wie die Bound Column auch auf 1 steht.
Habe ich noch nie geändert.

Ja, ich weiß, dass es bei 0 beginnt und nicht bei 1.
Sieht man auch im Code. Spalte A ist Listindex 0 beim Einlesen.

Das Einlesen erfolgt so:
PHP-Code:
Rem Spezialfilter aktivieren
    Worksheets
("Entfernungen").Range("A19:AF1020").AdvancedFilter Action:=xlFilterCopy_
    CriteriaRange
:=Worksheets("Auswahl").Range("A1:AF5"), CopytoRange:=Worksheets("Auswahl").Range("A5"), Unique:=False

Rem Anzahl Lösungen ermitteln
For 6 To Worksheets("Auswahl").Cells(Rows.Count19).End(xlUp).RowNext n
    n 
Worksheets("Auswahl").Cells(Rows.Count19).End(xlUp).Row

Rem Lösungen in 
die Listbox eintragen
With Worksheets
("Auswahl")
    
ListBox1.RowSource "Auswahl!" & .Range(.Cells(61), .Cells(n32)).Address
End With 

Interessant ist, dass die MsgBox tatsächlich 19 zeigt.
Also ist die Spalte T, als 20 nicht mehr möglich und daher der Fehler.
Aber ich habe doch mit ColumnCount = 32 genügend angegeben.
Antworten Top
#4
Moin!
Wie gesagt columncount = 32 sagt nur aus, dass 32 Spalten in der Listbox angezeigt werden (falls eingetragen). Möglicher weitere Spalten sind dann "ausgeblendet".
Bei dir sind aber (warum auch immer) nur 19 Spalten drin
Suche mal im Code ob nicht doch irgendwo noch was eingelesen wird (ggf. beim Erstellen vergessen auszukommentieren). Sollte dann entweder wie bei dir mit rowssoure = oder .list = geschehen.
Und das du deine Zuweisung schon ab Index 0 begonnen hast, hatte ich gesehen. Wollte trotzdem nochmal darafu hinweisen. War nicht böse gemeint.
VG
Antworten Top
#5
Oh nein!
Ich habe es gefunden....
War doch tatsächlich in einer der vielen anderen Subs noch einer mit 19 drin, statt 32.
ListBox1.RowSource = "Auswahl!" & .Range(.Cells(6, 1), .Cells(n, 19)).Address
Und genau die hat das Problem gebracht.
Auf jeden Fall danke ich dir für deine Hilfe den Fehler zu finden.
Schönen Abend noch.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste