Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array-Bestandteil per VBA rauslöschen

Forumthread: Array-Bestandteil per VBA rauslöschen

Array-Bestandteil per VBA rauslöschen
03.06.2005 17:00:45
Dieter
Hallo Excelianer(innen)
Problem:
ich möchte per VBA bestimmte Elemente aus einem Array rauslöschen.
Beispiel:
Array("KG_T1", "KG_T2", "KG_T3", "KG_T4", "KG_T5", "KG_T6")
aus diesem Array möchte ich irgendein Element rauslöschen.
(dies ist nur ein ganz kleines Beispiel, Arrays sind viel länger)
Wie könnte ich das lösen?
Vielen Dank für Eure Mühe
Gruesse Dieter
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array-Bestandteil per VBA rauslöschen
03.06.2005 18:30:52
Ramses
Hallo
hier mal eine Variante
Option Explicit
Option Base 1

Sub demo_del_Array()
Dim myArr() As Variant
Dim tmparr() As Variant
Dim i As Integer, n As Integer
myArr = Array("KG_T1", "KG_T2", "KG_T3", "KG_T4", "KG_T5", "KG_T6")
'Ausdruck des arrays
For i = 1 To UBound(myArr())
Cells(i, 1) = myArr(i)
Next i
'Löschen des 2. Array-Eintrages
myArr(2) = ""
'Ausdruck des neuen Array
For i = 1 To UBound(myArr())
Cells(i, 2) = myArr(i)
Next i
ReDim tmparr(UBound(myArr))
'Füllen des temporären Array
n = 1
For i = 1 To UBound(myArr())
If myArr(i) <> "" Then
tmparr(n) = myArr(i)
n = n + 1
End If
Next i
ReDim myArr(UBound(tmparr))
'Zeigen des neuen "durchgehenden" Array
For i = 1 To UBound(tmparr())
myArr(i) = tmparr(i)
Next i
For i = 1 To UBound(myArr())
Cells(i, 3) = myArr(i)
Next i
End Sub

Gruss Rainer
Anzeige
AW: Array-Bestandteil per VBA rauslöschen
Dieter
Hi Ramses
vielen Dank für Deinen Beitrag
Grüsse von der Donau
Dieter
AW: Array-Bestandteil per VBA rauslöschen
04.06.2005 18:27:32
MichaV
Hi,
hier noch eine Variante ohne temporär- Array:


      
Option Explicit
Option Base 1
Private Sub CommandButton1_Click()
Dim myArr
Dim i
myArr = Array("KG_T1", "KG_T2", "KG_T3", "KG_T4", "KG_T5", "KG_T6")
'2. Eintrag löschen
For i = 2 To UBound(myArr) - 1
  myArr(i) = myArr(i + 1)
Next
ReDim Preserve myArr(UBound(myArr) - 1)
'Ausgabe
Range(Cells(1, 1), Cells(UBound(myArr), 1)) = Application.WorksheetFunction.Transpose(myArr)
End Sub 


Gruß- Micha
Anzeige
AW: Array-Bestandteil per VBA rauslöschen
06.06.2005 19:48:51
Dieter
Hi Micha
auch Dir vielen Dank
Gruss Dieter
;
Anzeige

Infobox / Tutorial

Array-Elemente in VBA löschen


Schritt-für-Schritt-Anleitung

Um ein Array-Element in VBA zu löschen, kannst du folgende Schritte befolgen:

  1. Definiere das Array: Erstelle ein Array mit den gewünschten Werten.

    Dim myArr() As Variant
    myArr = Array("KG_T1", "KG_T2", "KG_T3", "KG_T4", "KG_T5", "KG_T6")
  2. Löschen eines Elements: Setze das Element, das du löschen möchtest, auf einen leeren String.

    myArr(2) = "" ' Lösche das zweite Element
  3. Erstelle ein temporäres Array: Fülle ein neues Array mit den Werten, die nicht gelöscht wurden.

    Dim tmparr() As Variant
    ReDim tmparr(UBound(myArr))
    Dim n As Integer
    n = 1
    For i = 1 To UBound(myArr)
       If myArr(i) <> "" Then
           tmparr(n) = myArr(i)
           n = n + 1
       End If
    Next i
  4. Redimensioniere das Original-Array: Übertrage die Werte aus dem temporären Array in das ursprüngliche Array.

    ReDim myArr(UBound(tmparr))
    For i = 1 To UBound(tmparr)
       myArr(i) = tmparr(i)
    Next i
  5. Ausgabe in Excel: Zeige das bereinigte Array in einer Excel-Tabelle an.

    For i = 1 To UBound(myArr)
       Cells(i, 1) = myArr(i)
    Next i

Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des zulässigen Bereichs"

    • Lösung: Stelle sicher, dass du beim Zugriff auf Array-Indizes die korrekten Grenzen verwendest. Bei Option Base 1 beginnt der Index bei 1, nicht bei 0.
  • Fehler: Leeres Array nach Löschvorgang

    • Lösung: Überprüfe, ob das Element wirklich gelöscht wurde und das temporäre Array korrekt gefüllt wird. Verwende Debugging, um den Inhalt des Arrays zu überprüfen.

Alternative Methoden

Eine andere Methode, um ein Element aus einem Array zu löschen, besteht darin, das Array direkt ohne ein temporäres Array zu bearbeiten. Du kannst die Werte nach dem zu löschenden Element einfach nach links verschieben. Hier ein Beispiel:

For i = 2 To UBound(myArr) - 1
    myArr(i) = myArr(i + 1)
Next i
ReDim Preserve myArr(UBound(myArr) - 1)

Diese Methode ist effizient, wenn du nur ein Element löschen möchtest.


Praktische Beispiele

  • Beispiel: Löschen des dritten Elements Hier ein vollständiges VBA-Skript, das das dritte Element aus dem Array entfernt.
Sub DeleteThirdElement()
    Dim myArr() As Variant
    myArr = Array("KG_T1", "KG_T2", "KG_T3", "KG_T4", "KG_T5", "KG_T6")

    ' Lösche das dritte Element
    For i = 3 To UBound(myArr) - 1
        myArr(i) = myArr(i + 1)
    Next i
    ReDim Preserve myArr(UBound(myArr) - 1)

    ' Ausgabe
    For i = 0 To UBound(myArr)
        Cells(i + 1, 1) = myArr(i)
    Next i
End Sub

Tipps für Profis

  • Verwende Application.Max: Um die maximale Größe eines Arrays zu bestimmen, kannst du Application.WorksheetFunction.Max verwenden. Das ist hilfreich, wenn du dynamisch mit Arrays arbeitest.

  • Leere Arrays: Um ein Array zu leeren, kannst du ReDim myArr(0) verwenden, was alle vorhandenen Werte entfernt.

  • Optimierung: Vermeide übermäßiges Redimensionieren. Wenn du oft Werte hinzufügst oder entfernst, könnte eine Collection oder ein Dictionary die bessere Wahl sein.


FAQ: Häufige Fragen

1. Wie kann ich ein mehrdimensionales Array in VBA löschen? Um ein Element in einem mehrdimensionalen Array zu löschen, musst du die gleiche Logik wie bei einem eindimensionalen Array anwenden, jedoch unter Berücksichtigung beider Dimensionen.

2. Gibt es eine Möglichkeit, ein Array effizient zu leeren? Ja, du kannst ein Array einfach mit ReDim myArr(0) leeren, was alle Elemente entfernt und die Größe auf 0 setzt.

3. Wie verwende ich Application.Max in Verbindung mit Arrays? Application.Max kann verwendet werden, um das Maximum in einem Array zu finden. Dies ist nützlich, um die Grenzen beim Arbeiten mit Arrays festzulegen.

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