Excel VBA – Bereichsgröße ändern
In this Article
Größenänderung eines Bereichs mit VBA
In diesem Tutorial wird gezeigt, wie Sie die Eigenschaft „Resize“ des Range-Objekts verwenden, um einen neuen Bereich zurückzugeben, dessen Größe gegenüber dem ursprünglichen Range-Objekt geändert ist.
Syntax
Die Syntax für die Eigenschaft Resize lautet:
Range("A1").Resize (zeilen_groesse, spalten_groesse)
Dabei ist Range(„A1“) Ihr Ausgangsbereich.
zeilen_groesse und spalten_groesse müssen größer als Null sein. Jede Eingabe ist optional (z. B. können Sie zeilen_groesse weglassen, um nur die Anzahl der Spalten zu ändern, oder umgekehrt).
Anzahl der Zeilen und Spalten ändern
Das folgende Beispiel erweitert den Bereich mit einer Zelle A1 auf den Bereich A1:D10, indem die Zeilenzahl auf 10 und die Spaltenzahl auf 5 erhöht wird.
Range("A1").Resize(10, 5).Select
Oder Sie weisen den in der Größe veränderten Bereich einer Variablen zu, was häufiger vorkommt:
' Die Größe des Bereichs auf die gewünschte Größe ändern und ihn einer Variablen zuweisen
Set neuerBereich = ActiveSheet.Range("A1").Resize(10, 5)
Nur die Anzahl der Zeilen ändern
Das folgende Beispiel ändert nur die Anzahl der Zeilen:
' Nur die Anzahl der Zeilen ändern. Der neue Bereich wird $A$1:$A$10
Set neuerBereich = rng.Resize(10)
Nur Anzahl der Spalten ändern
Das folgende Beispiel ändert nur die Anzahl der Spalten:
' Nur die Anzahl der Spalten ändern
' Der neue Bereich wird $A$1:$E$1
Set neuerBereich = rng.Resize(, 5)
Größe des Tabellenbereichs ändern, um die Kopfzeile auszuschließen
Wenn Sie auf dem aktuellen Blatt eine Tabelle mit einer Kopfzeile haben, wählt der Code zunächst die gesamte Tabelle aus und geht dann eine Zeile nach unten, um die Kopfzeile mit der Methode Range.Offset auszuschließen. Anschließend wird die Eigenschaft Range.Resize verwendet, um die Größe um eine Zeile zu verringern.
Sub TabellenDatenAuswaehlen()
' **WICHTIG**
' Klicken Sie auf eine beliebige Zelle der Tabelle, bevor Sie das Makro ausführen
' Mit Offset eine Zeile nach unten verschieben und dann den Bereich um eine Zeile verkleinern
Set tbl = ActiveCell.CurrentRegion.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count)
' Daten werden ohne Kopfzeile ausgewählt
tbl.Address.Select
End Sub
2-D-Array in Bereich schreiben
Eine weitere häufige Anwendung ist das Schreiben eines 2-dimensionalen Arrays in ein Blatt. Da der zu beschreibende Bereich mit der Größe des Arrays übereinstimmen soll, die normalerweise nicht im Voraus bekannt ist, wird die Methode Resize verwendet, um den Ausgabebereich festzulegen.
Das folgende Beispiel überträgt die Daten im Bereich A1:E10 im aktuellen Blatt in ein Array und schreibt das Array ab Zelle A1 in das Blatt ‚Ausgabe‘:
Sub ArraySchreiben()
' Einlesen und Übertragen der Daten in ein Array
daten = Range("A1:E10").Value
' Größe des Ausgabebereichs ändern und das Array beschreiben
Worksheets("Ausgabe").Range("A1").Resize(UBound(daten, 1), UBound(daten, 2)).Value = daten
End Sub
Geschrieben von: Vinamra Chandra