Herbers Excel-Forum - das Archiv

auseinander liegende Spalten in ein Array bringen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
ListBox
Bild

Betrifft: auseinander liegende Spalten in ein Array bringen
von: Peter Feustel

Geschrieben am: 28.02.2005 16:35:34
Hallo Excel Experten,
wie bekomme ich zwei auseinander liegende Spalten in ein Array gepackt?
Hier mein Versuch:


Sub LiBo_fuellen()
Dim PfaDat   As Object
Dim Pfad     As String
Dim Datei    As String
Dim arrWerte As Variant
   Application.ScreenUpdating = False
   
   Pfad = ThisWorkbook.Path
   Datei = "Mitarbeiter.xls"
   
   Sheets("Tabelle5").ListBox1.ColumnWidths = "5,5 cm; 6,5 cm"
   Sheets("Tabelle5").ListBox1.Clear
   
   Set PfaDat = GetObject(Pfad & "\" & Datei)
   
   arrWerte = PfaDat.Sheets(1).Range("A1:A20", "C1:C20")  ' <=== Problem !!!
   
   MsgBox arrWerte(1, 1) & " / " & arrWerte(1, 2) & vbLf & _
          arrWerte(2, 1) & " / " & arrWerte(2, 2)
   Sheets("Tabelle5").ListBox1.List = arrWerte
   PfaDat.Close False
   Set PfaDat = Nothing
          
   Application.ScreenUpdating = True
          
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5

Ich möchte unbedingt eine Lösung mit Array verwirklichen.
Gruß Peter
Bild

Betrifft: AW: auseinander liegende Spalten in ein Array brin
von: bst

Geschrieben am: 28.02.2005 18:44:54
Abend Peter,
tu's per Hand. Einen anderen Weg kenne ich nicht.
cu, Bernd
--
Option Explicit
Sub Bla()
Dim arrwerte() As Variant
Dim arrneu() As Variant
Dim i As Integer
arrwerte = Range("A1:C20")
ReDim arrneu(1 To 20, 1 To 2)
For i = 1 To 20
arrneu(i, 1) = arrwerte(i, 1)
arrneu(i, 2) = arrwerte(i, 3)
Next
Range("E1:F20") = arrneu
End Sub

Bild

Betrifft: AW: auseinander liegende Spalten in ein Array brin
von: Peter Feustel

Geschrieben am: 28.02.2005 22:10:30
Hallo Bernd,
da läuft leider nicht.
Der Array ist zweidimensional und kann offensichtlich Range("A1:C20") nicht verkraften, weil das drei Spalten sind. Es kommt Laufzeitfehler '13': Typen unverträglich als Fehlermeldung.
Deshalb suche ich ja die Konzentration auf meine beiden Spalten A1:A20 und C1:C20.
Danke trotzdem, Gruß Peter
Bild

Betrifft: AW: auseinander liegende Spalten in ein Array brin
von: bst

Geschrieben am: 01.03.2005 10:00:57
Morgen Peter,
sollte nun schon gehen.
Der Dim war allerdings etwas unglücklich. Ohne den () klappt's auch wenn vor dem Range noch etwas steht. Warum dem so ist weiß ich nicht.
HTH, Bernd
--
Sub LiBo_fuellen()
Dim arrWerte As Variant
Dim arrNeu As Variant
Dim i As Integer
Worksheets("Tabelle2").Activate ' NUR ZUM TEST !!!
arrWerte = Worksheets(1).Range("A1:C20")
ReDim arrNeu(LBound(arrWerte) To UBound(arrWerte), 1 To 2)
For i = LBound(arrWerte) To UBound(arrWerte)
arrNeu(i, 1) = arrWerte(i, 1)
arrNeu(i, 2) = arrWerte(i, 3)
Next i
With Sheets("Tabelle5").ListBox1
.ColumnCount = 2
.ColumnWidths = "5,5 cm; 6,5 cm"
.Clear
.List = arrNeu
End With
End Sub

Bild

Betrifft: AW: auseinander liegende Spalten in ein Array brin
von: Peter Feustel

Geschrieben am: 01.03.2005 10:30:35
Hallo Bernd,
so funktioniert es ganz gut. Es hakt zwar noch beim Einfügen in "Tabelle5", geht dann aber seltsamerweise mit Einzelschritt (F8) über den Fehler hinweg. Beim 2. Versuch wird die geschlossene Datei gar nicht wieder richtig angefasst, aber das sind Dinge, die ich wohl noch finden werde.
Danke also und Gruß, Peter
 Bild
Excel-Beispiele zum Thema "auseinander liegende Spalten in ein Array bringen"
Durchgehende Sortierung mehrer nebeneinanderliegender Spalten Den jeweils darüberliegenden Wert in Leerzellen kopieren
Vorkommen von Zahlenreihen in Spalten Funktion ANZAHL2 ohne ausgeblendete Spalten
Spaltenbreite anpassen Spalten einer Mehrbereichsauswahl ausblenden.
Spaltennamen bestimmen Spalten/Zeilen aus- und einblenden
Zeilen und Spalten über ein Drehfeld ein- und ausblenden In einem Dialog ausgewählte Spalten drucken