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

Forumthread: Variable leeren

Variable leeren
Kai
Hallo,
großes Prob ich ziehe per VBA Daten aus verschiedenen Excelmappen.
Beim kopieren lese ich die Daten in eine Variable ein übertrage diese per copy in die Zielmappe, mache die nächste Excelmappe auf, kopiere wieder und füge in die Zielmappe ein.
Leider vergisst das Makro die Daten aus der ersten mappe nicht und fügt dieser wieder mit ein. Danach ich habe alle Daten 20 fach (habe 20 Quellexcelmappen).
Wie kann ich die Variable nach jedem kopieren leeren? Hier der Code
For Each Zelle In Range("I:BT").SpecialCells(xlCellTypeConstants, 4)
i = i + 1
ReDim Preserve Werte(1 To 5, 1 To i)
Werte(1, i) = Zelle.Offset(0, 1)
Werte(2, i) = Zelle.Offset(0, 2)
Werte(3, i) = Zelle.Offset(0, 3)
Werte(4, i) = Zelle.Offset(0, 4)
Werte(5, i) = Zelle.Offset(0, 7)
Next
Workbooks(Tätigkeit & ".xlsx").Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(UBound(Werte, 2), UBound(Werte, 1)) _
= WorksheetFunction.Transpose(Werte)
End If
Gruß Kai
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Variable leeren
26.01.2011 19:54:35
Uduuh
Hallo,
Erase Werte
For Each Zelle ...
Gruß aus’m Pott
Udo

AW: Variable leeren
26.01.2011 19:54:47
Uppe
Hallo Kai,
Erase Werte
Gruß Uppe
und i auf 0 setzen owT
26.01.2011 19:56:02
Uduuh
Anzeige
1000 Dank!!!
26.01.2011 19:59:43
Kai
Hi,
super so klappt es!
DANKE!
Gruß Kai
;
Anzeige
Anzeige

Infobox / Tutorial

Variablen in VBA leeren: So geht's richtig


Schritt-für-Schritt-Anleitung

Um in VBA eine Variable zu leeren, kannst du die Erase-Anweisung verwenden. Dies ist besonders nützlich, wenn du Daten aus mehreren Excel-Mappen kopierst und sicherstellen willst, dass die vorherigen Daten nicht mehr vorhanden sind. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Deklariere deine Variable: Zuerst musst du deine Variable deklarieren, z. B. ein Array.

    Dim Werte() As Variant
  2. Daten kopieren: Führe deinen Code aus, um Daten in die Variable einzulesen.

    For Each Zelle In Range("I:BT").SpecialCells(xlCellTypeConstants, 4)
       i = i + 1
       ReDim Preserve Werte(1 To 5, 1 To i)
       Werte(1, i) = Zelle.Offset(0, 1)
       Werte(2, i) = Zelle.Offset(0, 2)
       Werte(3, i) = Zelle.Offset(0, 3)
       Werte(4, i) = Zelle.Offset(0, 4)
       Werte(5, i) = Zelle.Offset(0, 7)
    Next
  3. Variable leeren: Nach dem Kopieren der Daten, aber bevor du mit dem nächsten Arbeitsblatt fortfährst, verwende die Erase-Anweisung.

    Erase Werte
  4. Wiederhole den Vorgang: Setze den Zähler zurück und wiederhole den Vorgang für die nächsten Excel-Mappen.


Häufige Fehler und Lösungen

  • Fehler: Daten bleiben erhalten: Wenn du Erase Werte nicht an der richtigen Stelle im Code platzierst, könnten alte Daten erhalten bleiben. Stelle sicher, dass du die Variable nach dem Kopiervorgang und vor dem nächsten Loop leerst.

  • Fehler: Laufzeitfehler: Wenn du versuchst, auf ein leeres Array zuzugreifen, kann ein Laufzeitfehler auftreten. Setze den Zähler i nach dem Leeren auf 0, um diesen Fehler zu vermeiden.


Alternative Methoden

Wenn du alle Variablen leeren möchtest, kannst du auch die Set-Anweisung für Objektvariablen verwenden. Das sieht folgendermaßen aus:

Set myObject = Nothing

Für Arrays bleibt Erase die beste Methode. Diese Methoden sind besonders nützlich, wenn du vba alle variablen leeren möchtest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie man eine Variable in einer Schleife leer macht:

Dim Werte() As Variant
Dim i As Integer
i = 0

For Each Zelle In Range("A1:A10")
    i = i + 1
    ReDim Preserve Werte(1 To i)
    Werte(i) = Zelle.Value
    ' Leere die Variable nach jedem Loop
    Erase Werte
Next Zelle

In diesem Beispiel wird die Variable Werte nach jedem Durchlauf geleert, sodass sie nur die aktuellen Werte speichert.


Tipps für Profis

  • Verwende Erase vor der Datenzuweisung, um sicherzustellen, dass deine Variablen immer frisch sind.
  • Setze Zähler und Variablen vor dem Start der Schleife zurück, um Laufzeitfehler zu vermeiden.
  • Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden, was Fehler reduziert.

FAQ: Häufige Fragen

1. Wie kann ich alle Variablen in VBA leeren?
Du kannst Erase für Arrays verwenden und für Objektvariablen Set myObject = Nothing.

2. Was passiert, wenn ich Erase vergesse?
Wenn du Erase vergisst, bleiben die alten Daten in deinem Array, was zu fehlerhaften Ergebnissen führen kann.

3. Ist Erase für alle Datentypen geeignet?
Erase funktioniert nur für Arrays. Für normale Variablen kannst du sie einfach neu zuweisen oder auf Nothing setzen, wenn es sich um Objekte handelt.

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