Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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