Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: dynamisches zweidimensionales Array in Tabelle

dynamisches zweidimensionales Array in Tabelle
01.11.2016 17:57:47
Volker
Liebe Forenteilnehmer!
Ich versuche derzeit, ein zweidimensionales dynamisches Array (arrLog) zunächst zu füllen und nachfolgend in einer Tabelle auszugeben. Dies soll folgendermaßen ausschauen: Die Anzahl der Zeilen in der Ausgabetabelle variiert mit der Anzahl der Elemente des Arrays arrTab. Die Spaltenzahl bleibt gleich. In Spalte 6 werden die veränderlichen Werte des Arrays arrTab eingetragen, die übrigen Spalten erhalten feste Werte (z.b.: A,B,C,D,E) und bleiben von Zeile zu Zeile gleich. Ein neuer Tabelleneintrag soll dann in der nächsten freien Zeile erfolgen.
Der u. a. Code-Ansatz hilft mir noch nicht weiter. Was muss ich hier noch verändern?
Oder lässt sich dies einfacher/eleganter lösen?
Ich hoffe, es ist verständlich erklärt.
Viele Grüße
Volker
Sub ZweidimArrayInTabelle
Dim arrLog() As String
Dim spazähler As Integer
Dim zeizähler As Integer
ReDim arrLog(1 To 6, 1 To UBound(arrTab))
arrLog(1, 1) = "A"
arrLog(1, 2) = "B"
arrLog(1, 3) = "C"
arrLog(1, 4) = "D"
arrLog(1, 5) = "E"
arrLog(1, 6) = Werte aus Array arrTab
ReDim Preserve arrLog(1 To 6, 1 To UBound(arrTab))
For zeizähler = 1 To UBound(tmparrTab)
For spazähler = 1 To 6
ThisWorkbook.Worksheets("Ausgabe").Cells(zeizähler, spazähler).Value _
arrLog(zeizähler, spazähler)
Next spazähler
Next zeizähler
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: dynamisches zweidimensionales Array in Tabelle
01.11.2016 19:25:48
fcs
Hallo Volker,
in deinem Makro ist völlig unklar, wie arrTab mit den Daten gefüllt wird.
Ich in meinem Beispiel die Daten aus einem Zellbereich des Blatt "Eingabe" eingelesen.
LG
Franz
'Code in einem allgemeinen Modul
Option Explicit
Private arrTab
Sub FillArrTab()
'Daten aus Einagbe-Blatt in arrTab einlesen - hier aus Spalte A ab Zeile 2
With Worksheets("Eingabe")
arrTab = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
Call ZweidimArrayInTabelle
End Sub
Private Sub ZweidimArrayInTabelle()
Dim arrLog() As Variant 'kann String sein, wenn Werte in arrTab auch nur Texte sind.
Dim spazähler As Long
Dim zeizähler As Long
Dim zeiZiel As Long
Dim dimU As Long
Dim varWert
'prüfen,ob Array oder nur einzelner Wert
If Not IsArray(arrTab) Then
'Eingabe enthält nur einen Wert
'Wert zwischenspeichern
varWert = arrTab
'arrTab in Array verwandeln und Wert zuweisen
ReDim arrTab(1 To 1, 1 To 1)
arrTab(1, 1) = varWert
End If
dimU = LBound(arrTab, 1)
'Array gemäß Datenzeilen  in arrTab neu dimensionieren und mit Basisdaten füllen
ReDim arrLog(dimU To UBound(arrTab, 1), 1 To 6)
arrLog(dimU, 1) = "A"
arrLog(dimU, 2) = "B"
arrLog(dimU, 3) = "C"
arrLog(dimU, 4) = "D"
arrLog(dimU, 5) = "E"
'Array mit Daten auffüllen
For zeizähler = dimU To UBound(arrTab)
For spazähler = 1 To 6
Select Case spazähler
Case 1 To 5
'Basiswerte des Log-Array in jede Zeile übernehmen
arrLog(zeizähler, spazähler) = arrLog(dimU, spazähler)
Case 6
'Werte aus arrTab in Log-Array einlesen
arrLog(zeizähler, spazähler) = arrTab(zeizähler, 1)
End Select
Next spazähler
Next zeizähler
With ThisWorkbook.Worksheets("Ausgabe")
'nächste Einfüge-Zeile im Ausgabeblatt
zeiZiel = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
'Log-Array in Ausgabe eintragen
.Cells(zeiZiel, 1).Resize(UBound(arrTab, 1) - dimU + 1, 6) = arrLog
End With
Erase arrTab, arrLog
End Sub

Anzeige
AW: dynamisches zweidimensionales Array in Tabelle
02.11.2016 20:44:40
Volker
Hallo Franz!
Danke für deine Rückmeldung und den Vorschlag. Ich habe mein Problem zwischenzeitlich schon einfacher lösen können, indem die Arrayelemente aus arrTab direkt in die Tabellenspalte geschrieben und die übrigen Zellen per Schleife aufgefüllt werden.
Beste Grüße
Volker
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dynamisches Zweidimensionales Array in Excel Tabellen verwenden


Schritt-für-Schritt-Anleitung

  1. Das Array definieren: Stelle sicher, dass du ein dynamisches mehrdimensionales Array in deinem VBA-Makro definierst. Du kannst dies mit Dim arrLog() As String tun.

  2. Array dimensionieren: Verwende ReDim, um die Dimensionen deines Arrays anzupassen, hier ein Beispiel für ein zweidimensionales Array:

    ReDim arrLog(1 To 6, 1 To UBound(arrTab))
  3. Basiswerte eintragen: Fülle die ersten fünf Spalten des Arrays mit festen Werten:

    arrLog(1, 1) = "A"
    arrLog(1, 2) = "B"
    arrLog(1, 3) = "C"
    arrLog(1, 4) = "D"
    arrLog(1, 5) = "E"
  4. Dynamische Werte einfügen: Verwende eine Schleife, um die Werte aus arrTab in die letzte Spalte des Arrays zu übertragen:

    For zeizähler = 1 To UBound(arrTab)
       arrLog(zeizähler, 6) = arrTab(zeizähler, 1)
    Next zeizähler
  5. Daten in die Tabelle schreiben: Übertrage die Werte des Arrays in die gewünschte Excel-Tabelle:

    ThisWorkbook.Worksheets("Ausgabe").Cells(zeizähler, spazähler).Value = arrLog(zeizähler, spazähler)

Häufige Fehler und Lösungen

  • Fehler: Array nicht initialisiert: Stelle sicher, dass arrTab korrekt gefüllt ist, bevor du mit dem Füllen von arrLog beginnst.

  • Lösung: Überprüfung des Array-Typs: Verwende If Not IsArray(arrTab) Then, um sicherzustellen, dass arrTab ein Array ist.

  • Fehler: Werte nicht korrekt übertragen: Überprüfe die Schleifenbedingungen und die Indizes, die du verwendest, um sicherzustellen, dass du auf die richtigen Array-Elemente zugreifst.


Alternative Methoden

Eine Alternative zur Verwendung eines dynamischen Arrays ist die direkte Eingabe der Daten in die Tabelle, anstatt sie zuerst in ein Array zu laden. Dies kann durch das direkte Auslesen eines Zellbereichs erfolgen:

ThisWorkbook.Worksheets("Ausgabe").Range("A1:F" & UBound(arrTab)).Value = arrTab

Diese Methode kann effizienter sein, wenn du nur eine einfache Datenübertragung benötigst.


Praktische Beispiele

Ein einfaches Beispiel, um ein vba zweidimensionales array zu füllen und in eine Tabelle zu übertragen, könnte folgendermaßen aussehen:

Sub Beispiel()
    Dim arrLog(1 To 10, 1 To 6) As String
    Dim i As Integer

    For i = 1 To 10
        arrLog(i, 1) = "A" & i
        arrLog(i, 2) = "B" & i
        arrLog(i, 3) = "C" & i
        arrLog(i, 4) = "D" & i
        arrLog(i, 5) = "E" & i
        arrLog(i, 6) = "Wert" & i
    Next i

    ThisWorkbook.Worksheets("Ausgabe").Range("A1").Resize(10, 6).Value = arrLog
End Sub

Tipps für Profis

  • Verwende ReDim Preserve: Damit kannst du die Größe eines bereits bestehenden Arrays ändern, ohne die Werte zu verlieren.

  • Nutze Variant für Flexibilität: Wenn du mit unterschiedlichen Datentypen arbeiten möchtest, ist es ratsam, Variant für dein Array zu verwenden.

  • Debugging: Verwende Debug.Print, um den Inhalt deines Arrays während der Ausführung zu überprüfen, um sicherzustellen, dass die Werte korrekt übertragen werden.


FAQ: Häufige Fragen

1. Wie kann ich ein dynamisches Array in VBA initialisieren?
Ein dynamisches Array kann mit Dim arr() As Variant definiert und dann mit ReDim dimensioniert werden.

2. Was ist der Unterschied zwischen einem eindimensionalen und einem mehrdimensionalen Array?
Ein eindimensionales Array hat nur eine Dimension (z.B. eine Liste), während ein mehrdimensionales Array (z.B. arrLog(1 To 6, 1 To 10)) mehrere Dimensionen hat, die komplexere Datenstrukturen ermöglichen.

3. Wie kann ich die Größe eines Arrays während der Laufzeit ändern?
Verwende ReDim oder ReDim Preserve, um die Größe eines Arrays zu ändern. ReDim Preserve behält die bestehenden Werte bei, wenn das Array vergrößert oder verkleinert wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige