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

Forumthread: Selection.Offset - Aktive Zelle innerh. Selecion

Selection.Offset - Aktive Zelle innerh. Selecion
29.04.2009 15:36:36
Peter

Guten Tag
Mit nachfolgendem Code wird die bestehende Markierung um eine Spalte nach rechts verschoben.

Sub OffsetToRight()
'' Tastenkombination: Strg+Umschalt+R
Selection.Offset(0, 1).Select
End Sub


Wenn nun beispielsweise der Bereich B2:B12 markiert ist, wird die Markierung nach C2:C12 verschoben.
Wenn innerhalb der Ausgangsmarkierung B2:B12 die Zelle B10 aktiv ist, ist nach Aufrufen des Codes innerhalb der neuen Markierung nicht C10, sondern C2 aktiv.
Kann der Code so erweitert werden, dass auch die x-te Zelle aktiv ist, analog wie bei der Ausgangsmarkierung? Wenn ja, wie ist das zu bewerkstelligen?
Besten Dank für eine Antwort.
Gruss, Peter

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selection.Offset - Aktive Zelle innerh. Selecion
29.04.2009 15:44:35
Rudi
Hallo,
ActiveCell.Offset(, 1).Activate
Gruß
Rudi
AW: Selection.Offset - Aktive Zelle innerh. Selecion
29.04.2009 15:52:46
Peter
Hallo Rudi
Danke für die Antwort.
Der Bereich muss allerdings trotzdem markiert bleiben - mit dem Code von Tino klappt dies.
Gruss, Peter
AW: Selection.Offset - Aktive Zelle innerh. Selecion
29.04.2009 15:48:27
Tino
Hallo,
meinst Du so.

Dim AktiveZelle As Range
Set AktiveZelle = ActiveCell
Selection.Offset(0, 1).Select
AktiveZelle.Offset(0, 1).Activate


PS: für was ist dies gut?
Gruß Tino

Anzeige
AW: Selection.Offset - Aktive Zelle innerh. Selecion
29.04.2009 15:55:56
Peter
Hallo Tino
Genau - das ist prima, vielen Dank.
Mögliche Anwendung:
Du führst ein Kontokorrent nach (Spalten SOLL und HABEN). Am Anfang ist die ganze Spalte wo die SOLL-Einträge getippt werden, markiert. Dort gehören vielleicht auch die meisten Einträge dazu. Gelegentlich folgt dann ein Eintrag in die Spalte HABEN, dann wird der Code aufgerufen und man landet in der richtigen Zelle. Selbstverständlich gibt es dann wieder einen Code, der nach der gleichen Logik nach links springt.
Gruss, Peter
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mit Selection.Offset die aktive Zelle in Excel VBA verschieben


Schritt-für-Schritt-Anleitung

Um die aktive Zelle mit Selection.Offset in Excel VBA zu verschieben, kannst Du den folgenden Code verwenden. Dieser Code verschiebt die bestehende Markierung um eine Spalte nach rechts, während die aktive Zelle innerhalb der Markierung bleibt.

Sub OffsetToRight()
    ' Tastenkombination: Strg+Umschalt+R
    Dim AktiveZelle As Range
    Set AktiveZelle = ActiveCell
    Selection.Offset(0, 1).Select
    AktiveZelle.Offset(0, 1).Activate
End Sub

Dieser Code sorgt dafür, dass die Markierung wie gewünscht verschoben wird und die aktive Zelle in der neuen Markierung entsprechend bleibt. Wenn Du beispielsweise den Bereich B2:B12 markierst und den Code ausführst, wird der Bereich auf C2:C12 verschoben, wobei die aktive Zelle in der neuen Auswahl die richtige Position einnimmt.


Häufige Fehler und Lösungen

  1. Fehler: Ungültiger Bereich
    Lösung: Stelle sicher, dass der Bereich, den Du verschieben möchtest, korrekt markiert ist.

  2. Fehler: Aktive Zelle bleibt nicht innerhalb der Auswahl
    Lösung: Nutze die AktiveZelle Variable wie im obigen Beispiel, um die aktive Zelle anzupassen.

  3. Fehler: Code wird nicht ausgeführt
    Lösung: Überprüfe, ob Du die richtigen Berechtigungen in Excel hast, um Makros auszuführen.


Alternative Methoden

Du kannst auch alternative Methoden verwenden, um die Zelle zu verschieben, z.B. die Verwendung von ActiveCell.Offset. Hier ist ein Beispiel:

Sub MoveActiveCell()
    ActiveCell.Offset(0, 1).Select ' Verschiebt die aktive Zelle um eine Spalte nach rechts
End Sub

Diese Methode ist schneller, aber beachte, dass sie die Auswahl nicht verändert, sondern nur die aktive Zelle.


Praktische Beispiele

Hier sind einige praktische Szenarien, in denen selection.offset nützlich ist:

  • Kontokorrent führen: Wenn Du die Spalten SOLL und HABEN hast und die aktive Zelle nach einem Eintrag in die andere Spalte verschieben möchtest, kannst Du Selection.Offset verwenden, um die Auswahl beizubehalten.

  • Datenüberprüfung: Wenn Du Daten in einer Tabelle regelmäßig eingibst und die aktive Zelle zur nächsten Spalte verschieben musst, ist diese Methode sehr effizient.


Tipps für Profis

  • Verwende die Offset-Methode nicht nur für Zeilen und Spalten, sondern auch in Kombination mit anderen VBA-Funktionen, um komplexe Aufgaben zu automatisieren.

  • Experimentiere mit Selection.Offset(n, m), um mehrere Zellen gleichzeitig zu verschieben. Du kannst auch negative Werte verwenden, um rückwärts zu navigieren.

  • Achte darauf, Deine Makros gut zu kommentieren, damit Du und andere Nutzer sie leicht verstehen können.


FAQ: Häufige Fragen

1. Frage
Wie kann ich die aktive Zelle um mehrere Zeilen und Spalten verschieben?
Antwort: Du kannst die Offset-Methode wie folgt verwenden: ActiveCell.Offset(1, 2).Select, um die aktive Zelle um eine Zeile nach unten und zwei Spalten nach rechts zu verschieben.

2. Frage
Was passiert, wenn ich außerhalb des verfügbaren Bereichs verschiebe?
Antwort: Excel gibt einen Laufzeitfehler zurück, wenn Du versuchst, eine Zelle außerhalb des gültigen Bereichs zu erreichen. Stelle sicher, dass Deine Offsets innerhalb der Grenzen der Tabelle liegen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige