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

Zeile in Array einfügen (nicht anhängen)

Forumthread: Zeile in Array einfügen (nicht anhängen)

Zeile in Array einfügen (nicht anhängen)
11.04.2017 16:30:52
Barbaraa
Hallo
Meinem eindimensionalem Array muss an erster Stelle noch eine Zeile eingefügt werden.
Mit einer Scheife kann ich es, aber geht das ohne Schleife?
Sub Zeile()
Dim Liste(3)
Liste(0) = "Banane"
Liste(1) = "Citrone"
Liste(2) = "Dattel"
'Hoppla. Habe zu Beginn "Apfel" vergessen.
'Wie kann man das jetzt noch ändern?
'Liste(0) soll "Apfel" sein.
End Sub
LG,
Barbara
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile in Array einfügen (nicht anhängen)
11.04.2017 16:39:48
Hajo_Zi
Hallo Babara,
alles neu reinschreiben.

AW: Zeile in Array einfügen (nicht anhängen)
11.04.2017 16:43:17
ransi
HAllo,
Etwas gescheiters ist mir grad nicht eingefallen...
Option Explicit

Sub Zeile()
    Dim Liste(3)
    Dim vntArr
    Dim tmpStr As String
    Liste(0) = "Banane"
    Liste(1) = "Citrone"
    Liste(2) = "Dattel"
    
    tmpStr = Join(Liste, "###")
    tmpStr = "Apfel###" & tmpStr
    vntArr = Split(tmpStr, "###")
    Redim Preserve vntArr(UBound(vntArr) - 1)
    
    'Hoppla. Habe zu Beginn "Apfel" vergessen.
    'Wie kann man das jetzt noch ändern?
    'Liste(0) soll "Apfel" sein.
End Sub



ransi
Anzeige
Arraylist.Insert(0),"Apfel"
11.04.2017 16:55:06
ransi
HAllo BArbara,
Mit einer ArrayList geht das auch ganz direkt.
Sub machs()
    Dim objArrayList As Object
    Dim Liste As Variant
    Set objArrayList = CreateObject("system.Collections.Arraylist")
    With objArrayList
        .Add "Banane"
        .Add "Citrone"
        .Add "Dattel"
        Liste = .toArray
        MsgBox Join(Liste, vbCrLf)
        'Hoppla. Habe zu Beginn "Apfel" vergessen.
        'Liste(0) soll "Apfel" sein.
        .Insert (0), "Apfel"
        Liste = .toArray
        MsgBox Join(Liste, vbCrLf)
    End With
End Sub


ransi
Anzeige
AW: Zeile in Array einfügen (nicht anhängen)
11.04.2017 16:57:06
Daniel
Hi
prinzipell braucht man Schleifen bei einfachen Arrays nicht vermeiden, da Schleifen über einfache Wertarrays sehr schnell sind (manchmal sogar schneller als vergleichbare VBA-Funktionen)
wenns Schleifenfrei sein soll, gäbe es noch folgenden Workaround über die Listbox, denn bei einer Listbox kann man mit .AddItem die Werte an beliebiger Stelle hinzufügen:
1. lege eine versteckte Listbox an.
2. Übergebe das Array der Listbox
3. füge mit .AddItem der Listbox den Wert an der gewünschten Stelle hinzu
4. Übergebe die Listboxliste zurück ins Array und transponiere das Array:
With Tabelle1.ListBox1
.List = Liste
.AddItem "Apfel", 0
Liste = WorksheetFunction.Transpose(.List)
End With
Gruß Daniel
Anzeige
AW: Zeile in Array einfügen (nicht anhängen)
12.04.2017 19:52:40
Barbaraa
Hallo liebe Experten,
danke für die interessanten Vorschläge. Habe wieder was dazu gelernt.
LG, Barbara
;
Anzeige
Anzeige

Infobox / Tutorial

Zeile in Array einfügen: So geht's ohne Schleife


Schritt-für-Schritt-Anleitung

Um eine Zeile an einer bestimmten Stelle in einem eindimensionalen Array in VBA hinzuzufügen, kannst du folgende Schritte befolgen:

  1. Erstelle dein Array:

    Dim Liste(2) As String
    Liste(0) = "Banane"
    Liste(1) = "Citrone"
    Liste(2) = "Dattel"
  2. Verwende die Join- und Split-Funktionen: Um den gewünschten Wert in das Array einzufügen, kannst du die Werte zuerst in einen String umwandeln, den neuen Wert hinzufügen und dann wieder in ein Array umwandeln:

    Dim tmpStr As String
    Dim vntArr As Variant
    tmpStr = Join(Liste, "###")
    tmpStr = "Apfel###" & tmpStr
    vntArr = Split(tmpStr, "###")
  3. Redimensioniere das Array: Um die Größe des Arrays anzupassen, verwende ReDim Preserve:

    ReDim Preserve vntArr(UBound(vntArr) - 1)
  4. Das finale Array: Jetzt enthält vntArr den neuen Wert an der gewünschten Stelle.


Häufige Fehler und Lösungen

  • Fehler: "Typkonflikt"
    Dieser Fehler tritt auf, wenn du versuchst, einen Wert in einem nicht passenden Datentyp zu speichern. Stelle sicher, dass du die richtigen Datentypen verwendest.

  • Fehler: "Index außerhalb des Bereichs"
    Dieser Fehler kann auftreten, wenn du versuchst, auf ein Element des Arrays zuzugreifen, das nicht existiert. Überprüfe die Indizes, bevor du auf sie zugreifst.


Alternative Methoden

Eine effektive Methode, um Werte ohne Schleifen hinzuzufügen, ist die Verwendung einer ArrayList. Hier ist ein Beispiel:

Dim objArrayList As Object
Set objArrayList = CreateObject("System.Collections.ArrayList")
With objArrayList
    .Add "Banane"
    .Add "Citrone"
    .Add "Dattel"
    .Insert (0), "Apfel"  ' Fügt "Apfel" an die erste Stelle hinzu
End With

Diese Methode ist besonders nützlich, wenn du dynamisch Arrays verwalten möchtest.


Praktische Beispiele

Hier sind einige Beispiele für verschiedene Szenarien, in denen du eine Zeile in ein Array einfügen könntest:

  1. Einführung eines neuen Produkts:
    Wenn du eine Liste von Produkten hast und ein neues Produkt an der ersten Stelle hinzufügen möchtest, gehe wie folgt vor:

    Dim Produkte(2) As String
    Produkte(0) = "Banane"
    Produkte(1) = "Citrone"
    Produkte(2) = "Dattel"
    ' Füge "Apfel" hinzu
  2. Wochentage:
    Um einen neuen Wochentag am Anfang einer Liste hinzuzufügen:

    Dim Wochentage(6) As String
    Wochentage(0) = "Montag"
    ' Füge "Sonntag" hinzu

Tipps für Profis

  • Verwende ArrayList für dynamische Arrays: Mit ArrayList kannst du Elemente leicht hinzufügen und entfernen, ohne dich um die Größe des Arrays kümmern zu müssen.

  • Nutze WorksheetFunction.Transpose, um Arrays in eine andere Struktur zu transformieren, besonders nützlich für den Umgang mit Daten in Excel.


FAQ: Häufige Fragen

1. Kann ich ein mehrdimensionales Array auf die gleiche Weise bearbeiten?
Ja, du kannst ähnliche Methoden verwenden, musst jedoch sicherstellen, dass du die Dimensionen korrekt behandelst.

2. Gibt es einen Performance-Unterschied zwischen Array und ArrayList?
Ja, ArrayList kann bei wiederholten Einfügeoperationen effizienter sein, da sie dynamisch verwaltet wird, während Arrays eine feste Größe haben, die du beim Erstellen definieren musst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige