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

Range.Select mit VBA

Forumthread: Range.Select mit VBA

Range.Select mit VBA
15.01.2004 22:12:18
Hartmut
Hallo Ihr VBA-Experten,
Ich habe folgendes Problem:
Ich möchte ein Macro schreiben, dass von einer beliebigen aktiven Zelle ausgehend, 3 Spalten nach rechts sowie 4 Zeilen nach unten geht und diesen Bereich auswählt und aktiviert.
Vielen Dank für Eure Hilfe.
Hartmut
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range.Select mit VBA
15.01.2004 22:13:58
sergiesam
Hi,
versuchs mit ActiveCell.Offset(4, 3).Activate
Sam
AW: Range.Select mit VBA
15.01.2004 22:21:02
Hartmut
Danke für die schnelle Antwort.
Leider wird dann nicht der Bereich ausgewählt, sondern Excel springt 3 Spalten nach rechts und 4 Zeilen nach unten.
Hier mein klägliches Makro:

Sub RechercheBloc()
Columns("B:B").Select
Selection.Find(What:=Range("c4").Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Select
' "ActiveCell" soll die Zelle links oben sein.
' Nun soll der Cursor 3 Spalten nach rechts sowie 4 Zeilen nach unten
' springen und den gesamten Bereich auswählen
ActiveCell.Offset(3, 4).Select
End Sub

Anzeige
AW: Range.Select mit VBA
15.01.2004 22:24:09
PeterW
Hallo Hartmut,
zu select und activate schau mal hier:
http://xlfaq.herber.de/xlbasics/main_sel.htm
Davon abgesehen probier mal

Sub markiere()
Dim lgacRow As Long
Dim iacCol As Integer
lgacRow = ActiveCell.row
iacCol = ActiveCell.Column
Range(Cells(lgacRow, iacCol), Cells(lgacRow + 4, iacCol + 3)).Select
End Sub

Gruß
Peter
Anzeige
AW: Range.Select mit VBA
15.01.2004 22:33:41
Hartmut
Danke Peter,
Dein Makro macht genau das was ich gewünscht hatte.
Nach dem Einbau in mein Programm ist aber eine weitere Frage aufgetaucht:
Ich möchte nicht immer genau 4 Zeilen nach unten gehen, sondern nur bis zur ersten leeren Zelle in der Spalte, die direkt rechts von der Ausgangszelle "links oben" steht.
Könntest Du mir bitte auch dabei helfen?
Danke im voraus.
Hartmut
Anzeige
AW: Range.Select mit VBA
15.01.2004 22:41:14
PeterW
Hallo Hartmut,
schau dir den Link mal an, es lohnt sich!
"die direkt rechts von der Ausgangszelle "links oben" steht" - hmmm, zu dieser Tageszeit bau ich keine Tabelle nach um zu verstehen, was du meinen könntest.
Gruß
Peter
AW: Range.Select mit VBA
16.01.2004 12:32:59
PeterW
Hallo Hartmut,
so sollte es gehen:

Sub markiere()
Dim lgacRow As Long
Dim iacCol As Integer
Dim lgBereich As Long
lgBereich = Range(ActiveCell.Offset(0, 1).Address).End(xlDown).Row
lgacRow = ActiveCell.Row
iacCol = ActiveCell.Column
Range(Cells(lgacRow, iacCol), Cells(lgBereich, iacCol + 3)).Select
End Sub

Gruß
Peter
Anzeige
AW: Range.Select mit VBA
16.01.2004 13:13:11
Hartmut
Danke Peter, für Deine Antwort.
Jetzt in der Mittagspause habe ich nur mal reingeguckt, heute abend werde ich's ausprobieren...
Beste Grüsse von Hartmut
AW: Range.Select mit VBA
16.01.2004 22:12:12
Hartmut
Hallo Peter,
Danke für Deine Lösung, sie funktioniert prima, ausser wenn die zweite Zeile leer ist: dann wird eine dritte Zeile (die erste Zeile des Folgeblockes) mitkopiert. Siehe Beispieldatei: https://www.herber.de/bbs/user/3001.xls
Wenn Du in "Leistungen" die Zelle A6 (Wert "Z1") aktivierst und dann auf den Button "Blocksuche" gehst, erscheint auch "Q4b".
Hast Du eine Idee woran's liegt? Danke
Anzeige
AW: Range.Select mit VBA
15.01.2004 22:30:02
K.Rola
Hallo,
meinst einschließlich oder wie?

Sub markiere()
ActiveCell.Resize(5, 4).Select
End Sub

Gruß K.Rola
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Range.Select mit VBA


Schritt-für-Schritt-Anleitung

Um einen bestimmten Bereich in Excel mit VBA auszuwählen, kannst Du folgende Schritte befolgen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeinWorkbookName)“.
    • Wähle „Einfügen“ und dann „Modul“ aus.
  3. Füge den folgenden VBA-Code ein:

    Sub markiere()
       Dim lgacRow As Long
       Dim iacCol As Integer
       lgacRow = ActiveCell.Row
       iacCol = ActiveCell.Column
       Range(Cells(lgacRow, iacCol), Cells(lgacRow + 4, iacCol + 3)).Select
    End Sub

    Dieser Code wählt den Bereich von der aktiven Zelle bis zu 4 Zeilen nach unten und 3 Spalten nach rechts aus.

  4. Führe das Makro aus:

    • Stelle sicher, dass die gewünschte Zelle aktiv ist.
    • Drücke F5, um das Makro auszuführen.

Häufige Fehler und Lösungen

  • Problem: Der Bereich wird nicht ausgewählt, sondern nur aktiviert.

    • Lösung: Stelle sicher, dass Du .Select am Ende Deiner Range-Definition verwendest, um den Bereich tatsächlich auszuwählen.
  • Problem: Das Makro springt an die falsche Stelle.

    • Lösung: Überprüfe die Offset-Werte in ActiveCell.Offset() und stelle sicher, dass sie korrekt sind.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, einen Bereich auszuwählen. Eine alternative Methode verwendet die Resize-Funktion:

Sub AlternativeMarkiere()
    ActiveCell.Resize(5, 4).Select
End Sub

Diese Methode wählt den Bereich, der 5 Zeilen hoch und 4 Spalten breit ist, basierend auf der aktiven Zelle aus.


Praktische Beispiele

Hier sind einige Beispiele, wie Du den Range.Select-Befehl effektiv nutzen kannst:

  1. Bereich bis zur ersten leeren Zelle auswählen:

    Sub markiereBisLeere()
       Dim lgBereich As Long
       lgBereich = Range(ActiveCell.Offset(0, 1).Address).End(xlDown).Row
       Range(Cells(ActiveCell.Row, ActiveCell.Column), Cells(lgBereich, ActiveCell.Column + 3)).Select
    End Sub

    Dieser Code wählt den Bereich von der aktiven Zelle bis zur ersten leeren Zelle in der rechten Spalte aus.

  2. Einen festen Bereich auswählen:

    Sub FesterBereich()
       Range("A1:D5").Select
    End Sub

Tipps für Profis

  • Vermeide die Verwendung von Select und Activate, wenn möglich. Du kannst oft direkt mit dem Range-Objekt arbeiten, was den Code effizienter macht:

    Range("A1:D5").Copy Destination:=Range("E1")
  • Nutze .CurrentRegion, um schnell einen zusammenhängenden Bereich auszuwählen:

    ActiveCell.CurrentRegion.Select

FAQ: Häufige Fragen

1. Wie kann ich mehrere nicht zusammenhängende Bereiche auswählen? Du kannst die Union-Funktion verwenden:

Union(Range("A1:A10"), Range("C1:C10")).Select

2. Was ist der Unterschied zwischen Select und Activate? Select wählt einen Bereich aus, während Activate den Fokus auf das Arbeitsblatt oder die Zelle verschiebt, ohne den Bereich auszuwählen.

3. Warum funktioniert mein Makro nicht in Excel Online? Excel Online unterstützt nicht alle VBA-Funktionen, insbesondere die .Select- und .Activate-Methoden. Stelle sicher, dass Du die Desktop-Version von Excel verwendest.

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