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

ReDim

ReDim
Gregor
Hallo zusammen
Ich möchte folgende Funktion ausbauen:
Dim n As Double
Dim arrFind()
With Worksheets("Tabelle1")
intLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
For Start = 6 To intLastRow
If .Cells(Start, 10) > 0 Then
n = n + 1
ReDim Preserve arrFind(1 To 7, 1 To n)
arrFind(1, n) = .Cells(Start, 1).Value
arrFind(2, n) = .Cells(Start, 15).Value
arrFind(3, n) = .Cells(Start, 20).Value
arrFind(4, n) = .Cells(Start, 22).Value
arrFind(5, n) = .Cells(Start, 25).Value
arrFind(6, n) = .Cells(Start, 30).Value
arrFind(7, n) = .Cells(Start, 31).Value
End If
Next
End With
With usrErgebnis.lstFind
.ColumnCount = 7
.List = Application.Transpose(arrFind)
End With
usrErgebnis.Show
Ich möchte nun die ReDim-Funktion auf 99 Spalten ausbauen. Im Forum habe ich etwas gefunden wie mehrere Ebenen:
Private Sub LeseDaten()
Dim Ar2, Ar3()
Dim A&, AA&, AAA&
Dim LRowMax As Long
Dim DatumTxT As Date
With Tabelle1
LRowMax = .Cells(.Rows.Count, 53).End(xlUp).Row
If LRowMax  0 Then
ReDim Preserve Ar3(1 To UBound(Ar3), 1 To AAA)                      'HIER:  _
Redimensionierung von anderer als der zweiten Dimension? (Hanisch, 27.04.2010)
ListBox1.ColumnCount = UBound(Ar3)
ListBox1.List = Application.Transpose(Ar3)
End If
End Sub
Ich denke, das könnte der richtige Ansatz sein und versuchte das anzupassen komme aber nicht weiter. Wie kann ich 99 Spalten mit bis zu 2000 Zeilen einlesen und dann in eine Tabelle übertragen?
Vielen Dank und Gruss
Gregor

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: ReDim
28.10.2010 11:55:37
Rudi
Hallo,
mit Redim Preserve kann man nur die letzte Dimension eines Arrays ändern.
Geh doch einfach auf Nummer sicher.
Dim arr()
ReDim arr( 1 to 99, 1 to 2000)
'Code zum Füllen des Arrays mit Zählvariable n
Redim Preserve arr(1 to 99, 1 to n)
Sheets(1).Cells(1, 1).Resize(n, 99)=Worksheetfunction.Transpose(arr)
Gruß
Rudi
AW: ReDim
28.10.2010 14:34:20
Gregor
Hoi Rudi
Vorab besten Dank.
Der Code
Redim Preserve arr(1 to 99, 1 to n)
funktioniert nicht, ich weiss nicht weshalb.
Mit folgendem Code komme ich jedoch teilweise zum Ziel, auch wenn ich diesen nicht ganz verstehe. Teilweise deshalb, weil nach der gefundenen Zeile "Mitte" nicht bloss die eine Zeile, sondern 1 bis zu 10 Zeilen (gespeichert) kopieret werden müssen. Die zusätzlichen Zeilen sind variabel, die ich laufend eruiere.
Private Sub LeseDaten()
Dim Ar2, Ar3()
Dim A&, AA&, AAA&
Dim LRowMax As Long
Dim Start
With Tabelle5
LRowMax = .Cells(.Rows.Count, 1).End(xlUp).Row
If LRowMax 

Wie muss der Code ergänzt werden? Vielen Dank
Gregor
Anzeige
AW: ReDim
28.10.2010 14:57:22
Rudi
Hallo,
sondern 1 bis zu 10 Zeilen (gespeichert) kopieret werden müssen

und woran machst du das fest?
Redim Preserve arr(1 to 99, 1 to n)

Du hast ja auch kein n im Code.
Gruß
Rudi
AW: ReDim
28.10.2010 15:24:52
Gregor
Hallo Rudi
ZB mit der Variablen "Anzahl". die aus einer Zelle in der gefunden Zeile stammt.
Private Sub LeseDaten()
Dim Ar2, Ar3()
Dim A&, AA&, AAA&
Dim LRowMax As Long
Dim Start As Double
Dim Anzahl As Double
With Tabelle5
LRowMax = .Cells(.Rows.Count, 1).End(xlUp).Row
If LRowMax 
Gruss Gregor
Anzeige
AW: ReDim
28.10.2010 20:29:31
Rudi
Hallo,
du solltest deinen Variablen halbwegs sprechende Namen geben.
teste mal:
Private Sub LeseDaten()
Dim arrTemp, arrDaten()
Dim lngRows As Long, lngColumns As Long, lngCounter As Long
Dim LRowMax As Long
Dim Start As Double
Dim iAnzahl As Integer, iAnzahl2 As Integer
With Tabelle5
LRowMax = .Cells(.Rows.Count, 1).End(xlUp).Row
If LRowMax 

Gruß
Rudi
AW: ReDim
28.10.2010 22:52:41
Gregor
Hallo Rudi
Toll, funktioniert super, vielen Dank für deine Hilfe, ich hätte das nie hingekriegt.
Gruss Gregor
AW: ReDim
29.10.2010 20:23:19
Gregor
Hallo Rudi
Erst jetzt habe ich bemerkt, dass bei deinem Code doch etwas falsch läuft. Beim Übertragen wird meistens nur jede 2. Zeile übertragen. Wenn iAnzahl = 1 klappt es. Ansonsten wird wie gesagt mit wenigen Ausnahmen jede 2. übertragen. Beim Einzelschritt sehe ich, dass alle Daten eingelesen werden, auch diejenigen in der 2. und weiteren Zeilen. Die 3. Zeile wird dann wieder übertragen, die 4. wieder nicht, usw. Wieso werden nicht alle übertragen?
Leider ist die Datei viel zu gross um diese ins Netz zu stellen.
Danke und Gruss
Gregor
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige