Hallo Wissende,
ist zwar ein Excel-Vba Problem, aber ich wollte es für hier in VB umschreiben und bekomme es nicht hin,die Ausgabe in zwei Listboxen zu leiten.
Es kommt "Typen unvertäglich bei „List1=a“.
In den Eigenschaften von List1 konnte ich nichts entdecken mit dem ich der Listbox sage, daß sie 3 Spalten hat. „Columns“ scheint was anderes zu sein laut Beschreibung.
Das wäre das eine Problem.
Das andere Problem ist, ich habe ein Array a(45000,2). Die mittlere Spalte (Index=1) soll nun durchsucht werden nach bestimmten Werten. Werden diese gefunden sollen an dieser Stelle mehrere „Zeilen“ in das Array eingefügt werden.
(Mit Zeilen meine ich 0-45000, mit Spalten 0-2, heißt offiziell sicher anders)
In meinem Beispiel habe ich nun das a-Array verkleinert als Exceltabelle in Tabelle1 aufgelistet.
Die o.g. Suche fehlt noch im Code, im Code gehe ich davon aus die Zahl „8“ wurde gesucht und gefunden, somit ist bekannt,daß die „8“ in a(2,1) steht.
Nun funktioniert der Code schon soweit, daß er wie geplant das array a in das neue Array b rüberschreibt und dabei die gewünschten „Zeilen“ einfügt, wie man in Tabelle2 sehen kann.
Nur, geht das nicht eleganter als alles einzeln rüberzukopieren?
Wieso kann ich anstatt
b(0,0)=a(0,0)
b(0,1)=a(0,1)
b(0,2)=a(0,2)
nicht schreiben
b(0)=a(0)
?
Oder wie mit einem Rutsch alles von a(0,0) bis a(2,2) nach b(0,0) bis b(2,2) schaukeln ?
Tabelle1
│ A │ B │ C │
──┼────┼────┼────┤
1 │ 1 │ 2 │ 3 │
──┼────┼────┼────┤
2 │ 4 │ 5 │ 6 │
──┼────┼────┼────┤
3 │ 7 │ **8** │ 9 │
──┼────┼────┼────┤
4 │ 10 │ 11 │ 12 │
──┼────┼────┼────┤
5 │ 13 │ 14 │ 15 │
──┼────┼────┼────┤
6 │ 16 │ 17 │ 18 │
──┴────┴────┴────┘
Tabelle2
│ E │ F │ G │
──┼────┼────┼────┤
1 │ 1 │ 2 │ 3 │
──┼────┼────┼────┤
2 │ 4 │ 5 │ 6 │
──┼────┼────┼────┤
3 │ 7 │ 8 │ 9 │
──┼────┼────┼────┤
4 │ 7 │ 8a │ 9 │ Zeile eingefügt
──┼────┼────┼────┤
5 │ 7 │ 8b │ 9 │ Zeile eingefügt
──┼────┼────┼────┤
6 │ 7 │ 8c │ 9 │ Zeile eingefügt
──┼────┼────┼────┤
7 │ 10 │ 11 │ 12 │
──┼────┼────┼────┤
8 │ 13 │ 14 │ 15 │
──┼────┼────┼────┤
9 │ 16 │ 17 │ 18 │
──┴────┴────┴────┘
Tabellendarstellung erreicht mit dem Code in FAQ:2363
Nachstehend ist der Code um den es geht.
Danke ^ Gruß
Reinhard
Private Sub Form\_Load()
Dim z, s, N
ReDim a(5, 2)
For z = 0 To 5
For s = 0 To 2
N = N + 1
a(z, s) = N
Next s
Next z
ReDim b(UBound(a, 1) + 3, 2)
For z = 0 To 2
For s = 0 To 2
b(z, s) = a(z, s)
Next s
Next z
For z = 3 To 5
For s = 0 To 2
If s = 1 Then
b(z, s) = a(2, s) & Chr(94 + z)
Else
b(z, s) = a(2, s)
End If
Next s
Next z
For z = 6 To 8
For s = 0 To 2
b(z, s) = a(z - 3, s)
Next s
Next z
List1 = a
List2 = b
'Range("A1:C6") = a
'Range("E1:G9") = b
End Sub