Bereich in Array kopieren in Excel VBA
Schritt-für-Schritt-Anleitung
- Makro erstellen: Öffne den VBA-Editor in Excel (drücke
ALT + F11
).
- Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)" und wähle "Einfügen" > "Modul".
-
Code einfügen: Kopiere den folgenden Code in das Modul:
Sub Zahlenformat()
Dim sFeld()
Dim rBereich As Range
Set rBereich = Range("A1:A3")
rBereich.Clear
rBereich.Offset(0, 1).Clear
'Zellen A1:A3 werden befüllt
rBereich(1) = 3
rBereich(1).NumberFormat = "General"
rBereich(2) = 3
rBereich(2).NumberFormat = "$#,##0.00_);[Red]($#,##0.00)"
rBereich(3) = 43557
rBereich(3).NumberFormat = "yyyymmdd"
'Ende der Vorbereitung
ReDim sFeld(3)
sFeld = rBereich
rBereich.Offset(0, 1) = sFeld
End Sub
- Makro ausführen: Schließe den VBA-Editor und führe das Makro über
Entwicklertools > Makros
aus.
Häufige Fehler und Lösungen
Alternative Methoden
Anstelle des Arrays kannst Du auch die Value
-Eigenschaft verwenden, um die Werte zu kopieren:
Range("B1:B3").Value = Range("A1:A3").Value
Dies kopiert nur die Werte ohne Formatierungen. Wenn Du auch das Format übernehmen möchtest, musst Du dies separat tun.
Praktische Beispiele
Hier ein einfaches Beispiel, um Werte aus einem Bereich in ein Array zu kopieren und dann in einen anderen Bereich zu übertragen:
Sub BeispielKopieren()
Dim sFeld() As Variant
Dim rBereich As Range
Set rBereich = Range("A1:A3")
ReDim sFeld(1 To rBereich.Cells.Count)
Dim i As Integer
For i = 1 To rBereich.Cells.Count
sFeld(i) = rBereich.Cells(i).Value
Next i
Range("B1:B3").Value = sFeld
End Sub
Dieses Beispiel zeigt, wie Du die Werte in ein Array einfügen und dann in einen anderen Bereich kopieren kannst.
Tipps für Profis
-
Überwachungsfenster aktivieren: Im VBA-Editor kannst Du das Überwachungsfenster aktivieren, um die Werte und Datentypen in Echtzeit zu überprüfen. Dies hilft, Fehler schneller zu identifizieren.
-
Debugging: Nutze den Einzelschrittmodus (F8
), um den Code Zeile für Zeile durchzugehen. So siehst Du genau, was mit den Variablen und Arrays passiert.
-
Makros speichern: Achte darauf, Deine Excel-Datei im .xlsm-Format zu speichern, damit die Makros erhalten bleiben.
FAQ: Häufige Fragen
1. Warum wird das Format nicht mitkopiert?
Das Format wird nicht in Arrays gespeichert, da Arrays nur die Werte und keinen Zellformattyp enthalten.
2. Wie kann ich die Werte und das Format gleichzeitig kopieren?
Du musst die Werte und Formate separat kopieren. Zuerst die Werte mit Value
und dann die Formate mit NumberFormat
.
3. Ist das Beispiel auch in Excel 365 anwendbar?
Ja, die gezeigten Methoden sind in jeder modernen Excel-Version anwendbar, die VBA unterstützt.