Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Array in eine einzelne Zelle schreiben

VBA: Array in eine einzelne Zelle schreiben
20.11.2015 09:58:15
Alex
Hallo,
Ich habe folgendes Problem. Ich lese einen String z.b. "LL501|LL502|LL503" aus.
Danach splitte ich diesen an den | .
Nun habe ich ja ein Array in dem LL501, LL502, LL503 steht.
Nun würde ich dieses gerne in eine Zelle Schreiben.
Sheets(1).Cells(16, 3).Value = aMeinArray(i)
Bekomme ich einen Laufzeitfehler 9: "Index außerhalb des gültigen Bereichs"
Wenn ich das ganze in einer For Schleife mache funktioniert das Programm, allerdings bekomme ich nur den letzten Wert, in diesem Fall LL503, in die Zelle geschrieben.
Gibt es eine Möglichkeit das gesamte Array in die Zelle zu schreiben? Oder eine Möglichkeit Werte in eine Zelle hinzuzufügen? Bonus wäre es die Einträge mit Zeilenumbrüchen zu haben.. also das in Zelle 16C am Ende:
"LL501
LL502
LL503"
steht
Über Hilfe würde ich mich sehr freuen :)
mit freundlichen Grüßen
Alex

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Array in eine einzelne Zelle schreiben
20.11.2015 10:02:46
Rudi
Hallo,
dann musst du es wieder zu einem String verketten.
Sheets(1).Cells(16, 3).Value = Join(aMeinArray, vbLF)
Gruß
Rudi

AW: VBA: Array in eine einzelne Zelle schreiben
20.11.2015 10:31:27
Alex
Funktioniert top :)
Super vielen Dank für die schnelle Antwort!
Mir fällt gerade ein Anschluss Problem auf.. ich müsste dem Array jetzt noch einen Wert hinzufügen. Finde aber den Befehl dazu nicht. Ich arbeite gerade das erste mal mit Arrays =/
Falls da noch wer eben Zeit hätte wäre das super :)
Gruß
Alex

Anzeige
du brauchst kein Array
20.11.2015 10:32:47
Tino
Hallo,
du brauchst kein Array, ersetze einfach das Zeichen durch einen Zeilenumbruch.
Sheets(1).Cells(16, 3).Value = Replace("LL501|LL502|LL503", "|", vbLf)
Gruß Tino

AW: du brauchst kein Array
20.11.2015 11:44:51
Alex
Oh Stimmt dieser Teil geht ohne Array wesentlich leichter. Danke :)
Jetzt habe ich aber eine Schleife in der ich aus einer Access Datenbank mehrere Werte auslese (unterschiedliche viele zwischen 1 und 6). Ich gehe die Datenbank bzw. das Recordset mit einer Schleife durch und immer wenn ich etwas finde, dass in das Feld gehört würde ich das ganze gerne in ein Array schreiben und wenn ich durch das Recordset durch bin, dann würde ich gerne das gesamte Array in die Zelle schreiben.
Alternativ würde es auch gehen, dass immer wenn ich einen Wert finde diesen direkt in die Zelle schreibe und wenn ich einen weiteren Wert finde diesen ergänze und so weiter.
Hat da jemand eine Idee?
Vielen Dank für jegliche Hilfe :)
mit freundlichen Grüßen
Alex

Anzeige
AW: du brauchst kein Array
20.11.2015 12:02:33
Rudi
Hallo,
kannst du direkt mit einem String machen
Schema:
For i=1 to AnzahlRecordset
if passt then
sTmp=sTmp & vbLF & Record(i)
end if
next i
Zelle=mid(sTmp,2)'erstes vbLF entfernen
Gruß
Rudi

AW: du brauchst kein Array
20.11.2015 12:32:14
Alex
Danke Rudi :)
Ich wusste nicht, dass man einen String so leicht erweitern kann. Das hilft enorm bei einigen Problemen!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Array in eine einzelne Zelle schreiben mit VBA


Schritt-für-Schritt-Anleitung

  1. String lesen und in Array umwandeln: Zuerst liest du einen String, der durch ein Trennzeichen wie | separiert ist. Hier ein Beispiel, wie du dies tun kannst:

    Dim aMeinArray() As String
    Dim sMeinString As String
    sMeinString = "LL501|LL502|LL503"
    aMeinArray = Split(sMeinString, "|")
  2. Array in eine Zelle schreiben: Um das gesamte Array in eine einzelne Zelle zu schreiben, kannst du die Join-Funktion verwenden, die alle Elemente des Arrays zu einem String verbindet und dabei ein Zeilenumbruch als Trennzeichen verwendet.

    Sheets(1).Cells(16, 3).Value = Join(aMeinArray, vbLF)
  3. Wert zum Array hinzufügen: Wenn du einen Wert zu einem bereits bestehenden Array hinzufügen möchtest, kannst du dies nicht direkt tun, da Arrays in VBA eine feste Größe haben. Stattdessen musst du ein neues Array erstellen und die Werte kopieren. Alternativ kannst du auch einen String verwenden, um die Werte zu speichern.

    Dim sTmp As String
    sTmp = sTmp & vbLF & "NeuerWert"
    Sheets(1).Cells(16, 3).Value = Mid(sTmp, 2) ' Entfernt das erste vbLF

Häufige Fehler und Lösungen

  • Laufzeitfehler 9: "Index außerhalb des gültigen Bereichs": Dieser Fehler tritt auf, wenn du versuchst, auf ein Element des Arrays zuzugreifen, das nicht existiert. Stelle sicher, dass du die richtige Indexierung verwendest.

  • Leere Zellen beim Schreiben: Wenn du ein Array in eine Zelle schreibst und nur das letzte Element siehst, stelle sicher, dass du die Join-Funktion korrekt anwendest und alle Elemente des Arrays in den String einfügst.


Alternative Methoden

Anstelle eines Arrays kannst du auch direkt den Replace-Befehl verwenden, um die Trennzeichen zu ersetzen und den gesamten String in eine Zelle zu schreiben.

Sheets(1).Cells(16, 3).Value = Replace("LL501|LL502|LL503", "|", vbLf)

Diese Methode ist besonders nützlich, wenn du nur einen String ohne ein komplexes Array benötigst.


Praktische Beispiele

Hier sind einige nützliche Beispiele, wie du Arrays in VBA verwenden kannst:

  1. Array von Strings erstellen:

    Dim aStrings() As String
    aStrings = Split("Wert1|Wert2|Wert3", "|")
  2. Array verketten und in Zelle schreiben:

    Sheets(1).Cells(1, 1).Value = Join(aStrings, vbLF)
  3. Dynamisches Array erstellen:

    Dim aDynamischesArray() As String
    ReDim aDynamischesArray(0) ' Initialisierung
    aDynamischesArray(0) = "ErsterWert"
    ' Füge mehr Werte hinzu
    ReDim Preserve aDynamischesArray(1)
    aDynamischesArray(1) = "ZweiterWert"

Tipps für Profis

  • Verwende ReDim Preserve, um die Größe eines Arrays zu ändern, ohne die bestehenden Werte zu verlieren.
  • Nutze vbLF für Zeilenumbrüche in Excel, um die Lesbarkeit von Zellen zu erhöhen.
  • Experimentiere mit Join und Split, um effizient mit Arrays von Strings in VBA zu arbeiten.

FAQ: Häufige Fragen

1. Wie kann ich ein Array in eine Tabelle schreiben?
Du kannst die Werte eines Arrays in eine Tabelle schreiben, indem du die Zellen mit einer Schleife durchläufst oder die Range-Eigenschaft verwendest.

2. Ist es möglich, ein Array von Strings direkt in eine einzelne Zelle zu schreiben?
Ja, du kannst die Join-Funktion verwenden, um die Array-Werte zu einem String zu verketten und diesen in eine Zelle zu schreiben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige