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
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
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
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
Sub markiere()
ActiveCell.Resize(5, 4).Select
End Sub
Um einen bestimmten Bereich in Excel mit VBA auszuwählen, kannst Du folgende Schritte befolgen:
Öffne den VBA-Editor:
ALT + F11
, um den VBA-Editor zu öffnen.Erstelle ein neues Modul:
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.
Führe das Makro aus:
F5
, um das Makro auszuführen.Problem: Der Bereich wird nicht ausgewählt, sondern nur aktiviert.
.Select
am Ende Deiner Range-Definition verwendest, um den Bereich tatsächlich auszuwählen.Problem: Das Makro springt an die falsche Stelle.
ActiveCell.Offset()
und stelle sicher, dass sie korrekt sind.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.
Hier sind einige Beispiele, wie Du den Range.Select
-Befehl effektiv nutzen kannst:
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.
Einen festen Bereich auswählen:
Sub FesterBereich()
Range("A1:D5").Select
End Sub
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
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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen