Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1244to1248
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

zwei Array zwei Column

zwei Array zwei Column
Laund
Hallo
Habe 2 Array, die ich nebeneinander in eine Listbox füllen möchte
mit
Listbox1.List = ArrayNr1
kann ich das Array 1 in die Lisbox füllen
Habe versucht mit
With Listbox1
.ColumnCount =2
Listbox1.List(0, 1) = ArrayNr1
Listbox1.List(0, 2) = ArrayNr2
Aber wie Ihr seht habe ich keine Ahnung...

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: zwei Array zwei Column
06.01.2012 13:28:13
Rudi
Hallo,
jetzt wissen wir ja nicht, wie deine Arrays aussehen.
Als Anssatz:
Sub xxxx()
Dim i As Integer, arr1, arr2
arr1 = Array(1, 2, 3, 4, 5, 6)
arr2 = Array(11, 12, 13, 14, 15, 16)
With ListBox1
.ColumnCount = 2
For i = 0 To UBound(arr1)
.AddItem arr1(i)
.List(i, 1) = arr2(i)
Next
End With
End Sub

Gruß
Rudi
AW: zwei Array zwei Column
06.01.2012 13:55:41
Laund
Danke für deine Antwort
Das weiss ich auch nicht so recht ;)
Nein es sind im ersten Array nur Zahlen (ca. 600) Spalte 3 von "D:\ACO.xls"
und im zweiten Array Bezeichungen (auch ca. 600) in Spalte 5 von "D:\ACO.xls"
mit AddItem funktioniert es jedenfalls nicht
mein Code wäre
Übrigens möchte ich eigenlich eine ComboBox und habe nur zum Testen eine Listbox genommen aber das sollte trotzdem gehen...

Dim sDateiACO As String, wbACO As Workbook
If Not IsArray(arrACO) Then
sDateiACO = "D:\ACO.xls"
Application.ScreenUpdating = False
Set wbACO = Application.Workbooks.Open(Filename:=sDateiACO, ReadOnly:=True)
Zeilenanzahl = Worksheets("PRO").Cells(Rows.Count, 5).End(xlUp).Row 'von Spalte 5
With wbACO.Worksheets("PRO")
arrACO = .Range(.Cells(2, 3), .Cells(Zeilenanzahl, 3))
End With
If Not IsArray(arrACO2) Then
With wbACO.Worksheets("PRO")
arrACO2 = .Range(.Cells(2, 5), .Cells(Zeilenanzahl, 5))
End With
wbACO.Close savechanges:=False
Application.ScreenUpdating = True
End If
End If
'With Eingabefeld.Projekte
'    .ColumnCount = 2
'    For i = 0 To UBound(arrACO)
'    .AddItem arrACO(i)
'    .List(i, 1) = arrACO2(i)
'    Next
'End With
Eingabefeld.Projekte.List = arrACO
Eingabefeld.Projekte2.List = arrACO2

Anzeige
AW: zwei Array zwei Column
06.01.2012 14:20:46
Laund
sorry frage noch offen...
AW: zwei Array zwei Column
06.01.2012 14:32:23
Rudi
Hallo,
das ist schon klarer.
With Eingabefeld.Projekte
.ColumnCount = 2
For iCounter = 1 To UBound(arrACO)
.AddItem arrACO(iCounter, 1)
.List(iCounter - 1, 1) = arrACO2(i, 1)
Next
End With
Gruß
Rudi
AW: zwei Array zwei Column
06.01.2012 14:49:15
Laund
Geht leider noch nicht
Beim .List(iCounter - 1, 1) = arrACO2(i, 1) gibt es einen Fehler
wenn ich die Zeile deaktiviere ladet er Array 1 arrACO jedoch herein
umschaufeln
06.01.2012 19:48:12
ransi
HAllo
Schaufel mal alles in temporäres Array.
Das wird dann deine Listbox1.List
Option Explicit


Sub xxxx()
    Dim L As Long, arr1, arr2
    arr1 = Array(1, 2, 3, 4, 5, 6)
    arr2 = Array(11, 12, 13, 14, 15, 16)
    Redim arrtmp(WorksheetFunction.Max(UBound(arr1), UBound(arr2)), 1)
    For L = LBound(arr1) To UBound(arr1)
        arrtmp(L, 0) = arr1(L)
    Next
    For L = LBound(arr2) To UBound(arr2)
        arrtmp(L, 1) = arr2(L)
    Next
    With ListBox1
        .ColumnCount = 2
        .List = arrtmp
    End With
End Sub


ransi
Anzeige
geht leider noch nicht
09.01.2012 09:23:08
Laund
Hallo Ransi
wenn ich
arr1 = Array(1, 2, 3, 4, 5, 6)
arr2 = Array(11, 12, 13, 14, 15, 16)
so definiere funktioniert es.
Aber mit meinen Arrays geht es nicht (Laufzeitfehler 13 Typen unverträglich).
Es liegt irgendwie daran, wie das Array gemacht wird. Es geht warscheinlich wegen Range nicht?!
Auch wenn ich eigenlich nur eine Zelle nehme:
arr1 = .Range(.Cells(2, 3), .Cells(2, 3))
Einfach ein Array laden funktioniert.
Die vordefinierten Arrays funktioniert auch zusammen.
Aber die beiden Range-Arrays gehen nicht...
AW: geht leider noch nicht
09.01.2012 10:02:11
MichaV
Hallo,
ja, es liegt wohl am Einlesen. Wenn Du es über Range einliest, bekommst Du ein 2-Dimensionales Array arr1(x,y). Um es zu einem 1-Dimensionalen Array zu schrumpfen kannst Du so schreiben:
arr1 = WorksheetFunction.Index(WorksheetFunction.Transpose(arr1), 1, 0)
Gruss- Micha
Anzeige
AW: geht leider noch nicht
09.01.2012 12:02:01
Laund
Hallo Micha
Ja das wars, es funktioniert!! Danke euch allen für die Hilfe
Es gibt nur noch ein kleines Problem:
Die erste Zeile ist leer. also von beiden columns, obwohl wenn ich die einzelnen Arrays lade diese bei Index 0 beginnen.
Was könnte das noch sein?
nur noch ein kleines...
09.01.2012 12:51:15
Laund
Hallo Micha
Ja das wars, es funktioniert!! Danke euch allen für die Hilfe
Es gibt nur noch ein kleines Problem:
Die erste Zeile ist leer. also von beiden columns, obwohl wenn ich die einzelnen Arrays lade diese bei Index 0 beginnen.
Was könnte das noch sein?
AW: nur noch ein kleines...
09.01.2012 13:53:01
MichaV
Hallo,
meinst Du dass in den Comboboxen nichts eingetragen wird, man muss sie erst öffnen und ein Element auswählen? Versuch so:
arr1 = Range("B5:B11")
arr1 = WorksheetFunction.Index(WorksheetFunction.Transpose(arr1), 1, 0)
ComboBox1.List = arr1
ComboBox1.ListIndex = 0
Die Arrays beginnen bei Index 1. Debug.print arr1(0) erzeugt einen Fehler, denn dieses Element gibt es nicht.
Gruss- Micha
Anzeige
AW: nur noch ein kleines...
09.01.2012 14:23:59
Laund
Nein leider nicht, in der Combobox ist wirklich im Dropdown-Fenster der erste Eintrag leer.
Das ganze sieht momentan so aus:

Dim sDateiARCO As String, wbARCO As Workbook
Dim L As Long, arrARCO, arrARCO2
Application.ScreenUpdating = False
If Not IsArray(arrARCO) Then
sDateiARCO = "v:\Office\Test.xls"
Set wbARCO = Application.Workbooks.Open(Filename:=sDateiARCO, ReadOnly:=True)
Zeilenanzahl = Worksheets("PRO").Cells(Rows.Count, 5).End(xlUp).Row 'von Spalte 5
With wbARCO.Worksheets("PRO")
arrARCO = .Range(.Cells(2, 3), .Cells(Zeilenanzahl, 3))
End With
If Not IsArray(arrARCO2) Then
With wbARCO.Worksheets("PRO")
arrARCO2 = .Range(.Cells(2, 5), .Cells(Zeilenanzahl, 5))
End With
wbARCO.Close SaveChanges:=False
End If
End If
arrARCO = WorksheetFunction.Index(WorksheetFunction.Transpose(arrARCO), 1, 0)
arrARCO2 = WorksheetFunction.Index(WorksheetFunction.Transpose(arrARCO2), 1, 0)
ReDim arrARCO3(WorksheetFunction.Max(UBound(arrARCO), UBound(arrARCO2)), 1)
For L = LBound(arrARCO) To UBound(arrARCO)
arrARCO3(L, 0) = arrARCO(L)
Next
For L = LBound(arrARCO2) To UBound(arrARCO2)
arrARCO3(L, 1) = arrARCO2(L)
Next
With Eingabefeld.Text_ANr
.ColumnCount = 2
.List = arrARCO3
End With
Application.ScreenUpdating = True

Anzeige
AW: nur noch ein kleines...
09.01.2012 16:43:49
MichaV
Hallo,
das Problem liegt in den Zeilen
ReDim arrARCO3(WorksheetFunction.Max(UBound(arrARCO), UBound(arrARCO2)), 1)
For L = LBound(arrARCO) To UBound(arrARCO)
mit ReDim wird in der Grundeinstellung ein Array erzeugt das mit dem Index 0 beginnt. arrARCO1 und 2 beginnen aber mit Index 1, weil mit Range eingelesen.
Schreibe ganz oben Option Base 1, dann änderst Du die Einstellung für den unteren Array- Index und dann sollte es gehen. Pass aber auf dass Du Dir dabei nicht irgendwelche anderen Arrays zerschiesst, alle automatisch erzeugten Arrays beginnen nun mit 1!
Oder ohne Option Base 1:
ReDim arrARCO3(1 to WorksheetFunction.Max(UBound(arrARCO), 1 to UBound(arrARCO2)), 1)
For L = LBound(arrARCO) To UBound(arrARCO)
Gruss- Micha
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige