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

Bereich.Verschieben als VBA

Forumthread: Bereich.Verschieben als VBA

Bereich.Verschieben als VBA
David
Hallo zusammen.
Ich habe einen Startpunkt A1. Von diesem ausgehend möchte ich einen Bereich nach rechts definieren mit einer bestimmten Länge.
.Offset verschiebt ja nur den Startpunkt und erlaubt keine Größenänderung. Length und Width sind hier wohl auch falsch.
Sozusagen das VBA-Gegenstück zu
Bereich.Verschieben(A1;;;;3) für den Bereich A1:A3.
Kann mir da bitte jemand auf die Sprünge helfen?
Danke und Gruß
David
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Cells(1, 1).Resize(3)
02.10.2009 09:43:12
Erich
Hi David,
mit Offset und Resize zusammen hast du in VBA die Möglichkeiten, die BEREICH.VERSCHIEBEN in Excel bietet.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Danke...
02.10.2009 11:10:18
David
... und schönes Wochenende.
Gruß
David
Korrektur : Cells(1, 1).Resize(,3)
02.10.2009 14:26:56
NoNet
Cells(1, 1).Resize(3) wäre analog zu BEREICH.VERSCHIEBEN(A1;;;3;) ;-)
Gruß, NoNet
Anzeige
AW: Korrektur : Cells(1, 1).Resize(,3)
02.10.2009 14:30:53
David
Der Hinweis auf Resize reichte mir schon aus, die Parameter krieg ich dann schon hin.
Trotzdem danke.
Schönes WoEnde
Gruß
David
Korrektur? ich weiß nich...
02.10.2009 16:47:12
Erich
Hi NoNet,
klar, da hast du recht.
Bei meiner Antwort hatte ich mich von "Bereich A1:A3" leiten lassen,
die Korinthen zwischen A1 und 3 hatte ich nicht gezählt...
Euch beiden ein schönes Wochenende und Grüße vom Erich aus Kamp-Lintfort
Anzeige
Vertikal - Horizontal - Korinthen
05.10.2009 18:12:17
NoNet
Hallo Erich,
es ging mir hierbei nicht um Korinthen,
sondern um einen Hinweis auf den Unterschied zwischen Spalten/Zeilen in der Funktion .Resize().
Es ist ja nicht unbedingt selbsterklärend, dass .Resize(3) 3 Zeilen entspricht und .Resize(,3) 3 Spalten.
Aber David hat es ja wohl auch mit Deiner Antwort richtig verstanden ;-)
Gruß, NoNet
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Bereich.Verschieben mit VBA: So funktioniert's


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor in Excel zu öffnen.

  2. Erstelle ein neues Modul: Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.

  3. Definiere den Bereich: Nutze die Offset und Resize Funktionen, um den gewünschten Bereich zu verschieben. Hier ein Beispiel:

    Sub BereichVerschieben()
       Dim rng As Range
       Set rng = Cells(1, 1) ' Startpunkt A1
       Set rng = rng.Offset(0, 1).Resize(3) ' Verschiebe nach rechts und resize auf 3 Zeilen
       rng.Select ' Wählt den neuen Bereich aus
    End Sub
  4. Führe das Skript aus: Gehe zurück zu Excel, drücke ALT + F8, wähle das Skript BereichVerschieben und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Method 'Offset' of object 'Range' failed"

    • Lösung: Stelle sicher, dass der Ausgangspunkt korrekt definiert ist. Überprüfe, ob die Zelle existiert.
  • Fehler: "Invalid procedure call or argument"

    • Lösung: Achte darauf, dass die Parameter in der Resize Methode korrekt angegeben sind. Beispielsweise Resize(3) bedeutet, dass du 3 Zeilen angeben musst, während Resize(,3) 3 Spalten definiert.

Alternative Methoden

Wenn du keinen Zugriff auf VBA hast oder eine schnellere Lösung benötigst, kannst du auch die Funktion BEREICH.VERSCHIEBEN direkt in Excel verwenden:

=BEREICH.VERSCHIEBEN(A1;;;3)

Diese Formel verschiebt den Bereich von A1 auf die nächsten 3 Zeilen. Beachte, dass dies jedoch keine VBA-Lösung ist und du eingeschränkt bist, was die Automatisierung angeht.


Praktische Beispiele

  1. Verschieben eines Bereichs um 2 Spalten nach rechts und 3 Zeilen nach unten:

    Sub BeispielVerschieben()
       Dim rng As Range
       Set rng = Cells(1, 1).Offset(3, 2) ' 3 Zeilen runter, 2 Spalten nach rechts
       rng.Select
    End Sub
  2. Verschieben und gleichzeitiges Vergrößern des Bereichs:

    Sub BereichVergrößern()
       Dim rng As Range
       Set rng = Cells(1, 1).Offset(0, 0).Resize(5, 2) ' 5 Zeilen hoch, 2 Spalten breit
       rng.Select
    End Sub

Tipps für Profis

  • Kombiniere Offset und Resize: Nutze beide Funktionen, um dynamisch Bereiche zu verschieben und ihre Größe anzupassen. Dies ist besonders nützlich, wenn du mit variierenden Datenmengen arbeitest.

  • Verwende Variablen: Definiere Variablen für Zeilen- und Spaltenverschiebungen, um deinen Code flexibler zu gestalten.

  • Fehlerbehandlung: Implementiere eine einfache Fehlerbehandlung, um unerwartete Ergebnisse zu vermeiden, insbesondere wenn du mit Benutzereingaben arbeitest.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Offset und Resize?
Offset verschiebt den Startpunkt eines Bereichs, während Resize die Größe des Bereichs anpasst. Beide zusammen können verwendet werden, um einen Bereich präzise zu definieren.

2. Wie kann ich einen Bereich mit VBA dynamisch anpassen?
Du kannst die Werte für Offset und Resize in Variablen speichern und diese dynamisch ändern, abhängig von den Daten oder Benutzereingaben.

3. Welche Excel-Version benötige ich für VBA?
VBA ist in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Excel für Microsoft 365.

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