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

markierter Bereich merken und übertragen

Forumthread: markierter Bereich merken und übertragen

markierter Bereich merken und übertragen
21.01.2016 16:43:08
Norbert
Hallo,
ich möchte den aktiv markierten Bereich in einer Variablen speichern und in mehreren Tabellenblättern den selben Bereich markieren. Der markierte Bereich ist auch immer eines der zu bearbeiteten Tabellenblätter. Für eine einzelne Zelle habe ich es hinbekommen, bei einer Bereichsmarkierung funktioniert es leider nicht. Über Hilfe würde ich mich sehr freuen.
Sub Mko_S_Bereich_anwählen()
Application.ScreenUpdating = False
Dim strBereich As Range
Set strBereich = Selection.Address
Application.Goto Worksheets("1R 1A").Range(strBereich), True
Application.Goto Worksheets("1R 2A").Range(strBereich), True
Application.Goto Worksheets("1R 3A").Range(strBereich), True
Application.Goto Worksheets("1R 4A").Range(strBereich), True
Application.Goto Worksheets("1R 5A").Range(strBereich), True
Application.Goto Worksheets("1R 6A").Range(strBereich), True
Application.Goto Worksheets("1R 7A").Range(strBereich), True
Application.Goto Worksheets("1R 8A").Range(strBereich), True
Application.Goto Worksheets("1R 9A").Range(strBereich), True
Application.ScreenUpdating = True
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: markierter Bereich merken und übertragen
21.01.2016 17:16:14
Daniel
Hi
wenn du den Zellbereich auf ein anderes Blatt übertragen willst, dann musst du die Adresse der selektierten Zellen verwenden.
Eine Zelladresse ist ein TEXT (String) und kein Range-Objekt.
daher:
dim strBereich as string
strBereich = Selection.Address
Application.Goto Worksheets("1R 1A").Range(strBereich), True
damit kannst du auch mehrer Zellen gleichzeitig ansprechen.
Die einzige Einschränkung ist, dass die Adresse der selektierten Zellen nicht länger als 256 Zeichen sein darf.
Gruß Daniel

Anzeige
AW: markierter Bereich merken und übertragen
21.01.2016 17:50:31
Norbert
Hallo Daniel,
funktioniert prima. Vielen Dank für die schnelle Info.
Gibt es noch eine Möglichkeit den sichtbaren Bildschirmbereich nachzubilden.
Auf dem Bildschirm ist folgendes sichtbar:
Oberste Zeile = 193
Linker Rand = Spalte A
Markierter Bereich = M203:Z219
Nach Aufruf des Makros ist die oberste linke Zelle auf dem Bildschirm die M203.
Die Markierung dient dazu, Informationen auf allen Arbeitsblättern zu kontrollieren,
bzw. um bestimmte Aktionen im markiertem Bereich auszuführen. Für die Kontrolle soll
aber der sichtbare Bildschirmbereich auch übertragen werden. Gibt es eine Möglichkeit
dies zu realisieren?

Anzeige
AW: markierter Bereich merken und übertragen
21.01.2016 17:55:11
Daniel
Hi
den sichtbaren Bereich kannst du als Range-Objekt mit ActiveWindow.VisibleRange ermitteln
oberste Zeile`= ActiveWindow.VisibleRange.Row
erste Spalte = ActiveWindow.VisibleRange.Column
(mit der Spalte als Spaltennummer)
Gruß Daniel

AW: markierter Bereich merken und übertragen
21.01.2016 18:07:07
Norbert
Hallo Daniel,
meine VBA-Kenntnisse sind sehr bescheiden. Was muss ich angeben, um in meinen Tabellenblättern
den gleichen sichtbaren Bereich einzustellen und den vorher markierten Bereich zu markieren?
Deine Antwort definiert doch nur die Variable. Ich bräuchte noch die Aktion zum Ausführen.
Grüße Norbert

Anzeige
AW: markierter Bereich merken und übertragen
21.01.2016 19:05:11
Norbert
Hallo,
wegen eines Tippfehlers haben meine Lösungsversuche nicht funktioniert.
Bin aber dann doch auf die Lösung gekommen.
Problem damit gelöst. Beitrag damit für mich abgeschlossen.
Vielen Dank nochmals an Daniel für die Unterstützung
Grüße Norbert
Sub Mko_S_Bereich_anwählen()
Application.ScreenUpdating = False
Dim strBereich As String
Dim strBSZeile As String
Dim strBSSpalte As String
strBereich = Selection.Address
strBSZeile = ActiveWindow.VisibleRange.Row
strBSSpalte = ActiveWindow.VisibleRange.Column
Application.Goto Worksheets("1R 1A").Range(strBereich), True
ActiveWindow.ScrollRow = strBSZeile
ActiveWindow.ScrollColumn = strBSSpalte

Anzeige
AW: markierter Bereich merken und übertragen
21.01.2016 19:13:35
Daniel
hi
im ausgangsblatt:
obersteZeile = activeWindow.ScrollRow
ersteSpalte = ActiveWindow.ScrollColumn
SelektierterBereich = Selection.Address
wenn du dann das nächste Blatt aktiviert hast, überträgst du dann so die Einstellungen vom alten Blatt:
ActiveWindow.ScrollRow = obersteZeile
ActiveWindow.Scrollcolumn = ersteSpalte
ActiveSheet.Range(SelektierterBereich).Select
ob du auch wirklich genau den gleichen Bereich siehst, hängt aber auch davon ab, ob Spaltenbreiten und Zeilenhöhen gleich sind.
obersteZeile und ersteSpalte müssen als LONG deklariert werden, SelektierterBereich als STRING
Gruß Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Markierten Bereich in Excel merken und übertragen


Schritt-für-Schritt-Anleitung

Um den aktiv markierten Bereich in einer Variablen zu speichern und ihn in mehreren Tabellenblättern zu übertragen, kannst Du das folgende VBA-Skript verwenden. Dieser Code funktioniert in Excel und benötigt keine speziellen Add-Ins.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Erstelle ein neues Modul, indem Du mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ klickst und „Einfügen“ > „Modul“ auswählst.
  3. Füge den folgenden Code in das Modul ein:
Sub Mko_S_Bereich_anwählen()
    Application.ScreenUpdating = False
    Dim strBereich As String
    Dim strBSZeile As Long
    Dim strBSSpalte As Long

    strBereich = Selection.Address
    strBSZeile = ActiveWindow.VisibleRange.Row
    strBSSpalte = ActiveWindow.VisibleRange.Column

    ' Übertrage den markierten Bereich auf ein anderes Blatt
    Application.Goto Worksheets("1R 1A").Range(strBereich), True
    ActiveWindow.ScrollRow = strBSZeile
    ActiveWindow.ScrollColumn = strBSSpalte

    ' Wiederhole die Schritte für weitere Blätter
    ' Hier die weiteren Blätter anpassen
    Application.Goto Worksheets("1R 2A").Range(strBereich), True
    ActiveWindow.ScrollRow = strBSZeile
    ActiveWindow.ScrollColumn = strBSSpalte
    ' Füge die übrigen Blätter hinzu...

    Application.ScreenUpdating = True
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Markiere den gewünschten Bereich in Deinem Arbeitsblatt.
  3. Starte das Makro über ALT + F8, wähle „Mko_S_Bereich_anwählen“ und klicke auf „Ausführen“.

Häufige Fehler und Lösungen

  • Fehler: Das Makro funktioniert nicht, weil die Adresse der selektierten Zellen zu lang ist.

    • Lösung: Stelle sicher, dass die Adresse nicht länger als 256 Zeichen ist. Andernfalls kannst Du den markierten Bereich nicht erfolgreich übertragen.
  • Fehler: Der sichtbare Bereich wird nicht korrekt übertragen.

    • Lösung: Überprüfe, ob du die Zeilenhöhe und Spaltenbreite der Blätter angeglichen hast. Diese müssen gleich sein, damit der activewindow.visiblerange identisch bleibt.

Alternative Methoden

Du kannst auch den sichtbaren Bereich direkt in der Zelle speichern, anstatt den markierten Bereich zu verwenden. Hier ist ein Beispiel, wie Du den sichtbaren Bereich ermitteln kannst:

Dim obersteZeile As Long
Dim ersteSpalte As Long

obersteZeile = ActiveWindow.VisibleRange.Row
ersteSpalte = ActiveWindow.VisibleRange.Column

Du kannst diesen Code verwenden, um den sichtbaren Bereich in anderen Blättern einzustellen, bevor Du den markierten Bereich überträgst.


Praktische Beispiele

Wenn Du beispielsweise die Zellen von M203:Z219 in mehreren Blättern markieren möchtest, verwende die oben genannten Skripte. Achte darauf, dass alle Blätter, die Du anpassen möchtest, im gleichen Format vorliegen, um eine konsistente Ansicht zu gewährleisten.


Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um die Bildschirmaktualisierung während der Ausführung des Makros zu deaktivieren. Dies beschleunigt den Prozess und verhindert Flackern.
  • Wenn Du den activewindow.visiblerange häufig verwendest, speichere die Werte in einer Variablen, um die Lesbarkeit Deines Codes zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich den sichtbaren Bereich in meinem VBA-Skript verwenden? Du kannst den sichtbaren Bereich mit ActiveWindow.VisibleRange ermitteln und die Zeilen- und Spaltennummern speichern, um sie später zu verwenden.

2. Was passiert, wenn ich einen Bereich markiere, der auf einem anderen Blatt nicht existiert? In diesem Fall wird ein Laufzeitfehler auftreten. Du solltest sicherstellen, dass der markierte Bereich in jedem Blatt vorhanden ist, bevor Du das Makro ausführst.

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