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

Forumthread: VBA: Resize

VBA: Resize
14.08.2013 23:39:00
WalterK
Hallo,
Kann mir jemand erklären was Resize in dieser Codezeile bewirkt?
wsQuelle.Cells(LZEins, 1).Resize(LzMax, LCol2).Copy .Range("A3")
Danke und Servus, Walter

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Resize
15.08.2013 00:03:58
Erich
Hi Walter,
hilft dir die VBA-Hilfe zur Resize-Eigenschaft nicht weiter?
wsQuelle.Cells(LZEins, 1) ist ein Bereich im Blatt wsQuelle.
....Resize(LzMax, LCol2) macht daraus einen Bereich mit LzMax Zeilen und LCol2 Spalten,
ausgehend von der linken oberen Zelle von wsQuelle.Cells(LZEins, 1).
(In diesem Fall ist wsQuelle.Cells(LZEins, 1) auch gleich die linke obere Zelle von wsQuelle.Cells(LZEins, 1),
weil das ohnehin nur eine einzige Zelle ist, aber das muss nicht so sein.)
Range("B3:C6").Resize(1, 5) ist gleich Range("B3:F3") - einem Bereich mit einer Zeile und 5 Spalten.
wsQuelle.Cells(LZEins, 1).Resize(LzMax, LCol2) ist derselbe Bereich wie
wsQuelle.Range(wsQuelle.Cells(LZEins, 1),wsQuelle.Cells(LZEins + LzMax - 1, LCol2))
Eine Entsprechung findest du in der Excel-Fkt. BEREICH.VERSCHIEBEN, wenn du da den 3. und 4. Parameter
(Höhe und Breite) betrachtest.
Das .Resize(LzMax, LCol2) bewirkt also, dass nicht eine einzelne Zellwe kopiert wird,
sondern ein Bereich mit LzMax Zeilen und LCol2 Spalten. Alles klar?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Resize
15.08.2013 00:26:26
WalterK
Hallo Erich,
besten Dank für Deine ausführliche und für mich verständliche Hilfe.
Servus, Walter
;
Anzeige

Infobox / Tutorial

Excel VBA: Effektiv mit der Resize-Eigenschaft arbeiten


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel, indem Du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu: Klicke im Projektfenster mit der rechten Maustaste auf dein Projekt und wähle „Einfügen“ > „Modul“.

  3. Schreibe den Code: Verwende die Resize-Eigenschaft, um einen Zellbereich zu erweitern. Hier ein einfaches Beispiel:

    Sub BeispielResize()
       Dim ws As Worksheet
       Set ws = ThisWorkbook.Sheets("Tabelle1")
       ws.Cells(1, 1).Resize(5, 3).Value = "Test"
    End Sub

    In diesem Beispiel wird der Inhalt in die Zellen A1 bis C5 geschrieben.

  4. Führe den Code aus: Drücke F5, um das Makro auszuführen und sieh dir das Ergebnis in Excel an.


Häufige Fehler und Lösungen

  • Fehler: „Typen nicht übereinstimmend“

    • Lösung: Überprüfe, ob die Variablen korrekt deklariert sind. Stelle sicher, dass der Bereich, den Du mit Resize ansprechen möchtest, existiert.
  • Fehler: „Laufzeitfehler 1004: Anwendung oder Objekt definiert Fehler“

    • Lösung: Stelle sicher, dass das Arbeitsblatt, auf das Du zugreifst, tatsächlich existiert und nicht geschützt ist.

Alternative Methoden

Wenn Du mit der Resize-Eigenschaft nicht vertraut bist, kannst Du auch die Range-Methode verwenden. Hier ein Beispiel:

Sub BeispielRange()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Tabelle1")
    ws.Range(ws.Cells(1, 1), ws.Cells(5, 3)).Value = "Test"
End Sub

Diese Methode erreicht das gleiche Ergebnis wie die Verwendung von Resize, erlaubt jedoch mehr Flexibilität bei der Angabe von Zellen.


Praktische Beispiele

  1. Mehrere Zeilen und Spalten kopieren:

    Sub KopierenMitResize()
       Dim wsQuelle As Worksheet
       Set wsQuelle = ThisWorkbook.Sheets("Daten")
       wsQuelle.Cells(2, 1).Resize(10, 5).Copy Destination:=ThisWorkbook.Sheets("Ziel").Range("A1")
    End Sub

    In diesem Beispiel wird ein Bereich von 10 Zeilen und 5 Spalten kopiert.

  2. Dynamischen Bereich erstellen:

    Sub DynamischerBereich()
       Dim LzMax As Long, LCol2 As Long
       LzMax = 3
       LCol2 = 2
       ThisWorkbook.Sheets("Daten").Cells(1, 1).Resize(LzMax, LCol2).Value = "Dynamisch"
    End Sub

Tipps für Profis

  • Verwende .Resize in Kombination mit .Offset: Dies ermöglicht es Dir, den Bereich an eine andere Position zu verschieben. Beispiel:

    ws.Cells(1, 1).Offset(1, 0).Resize(5, 3).Value = "Verschoben"
  • Nutze die Application-Objekte: Wenn Du die Performance verbessern möchtest, setze Application.ScreenUpdating auf False während der Ausführung deines Codes.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Resize und Range?
Resize verändert die Größe eines bestehenden Bereichs, während Range verwendet wird, um einen neuen Bereich zu definieren.

2. Wo finde ich weitere Hilfe zu Resize in VBA?
Die VBA-Hilfe ist ein nützliches Tool, um mehr über die Resize-Eigenschaft und ihre Anwendung zu erfahren. Du kannst sie direkt im VBA-Editor aufrufen.

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