Excel-Makro, relativer Bezug (Z)> Syntax

Guten Tag,

Anfrage dritter Anlauf (ich bin inzwischen etwas schlauer geworden).

  1. Ich setze den Cursor auf Zeile 6, Spalte 1 (z.B.)
  2. Dann starte ich das Makro, das als ersten Schritt in genau dieser Zeile von Spalte A bis (z.B.) Spalte AE markieren soll.
  3. Ab da funktioniert mein Makro.

Nur: wenn ich anschließend auf Zeile 7, Spalte A, gehe und dann das Makro erneut starte, will es wieder in Zeile 6. Mit relativen Bezügen soll das laut Excel-Hilfe gehen - aber wie lautet die Syntax?

Versuche mit
RANGE „(Z,S(A);Z,S(AE))“ AS RANGE; SELECT
und ähnlicher Syntax führten zu keinem Ergebnis: Makro geht nicht oder meldet Fehler.

Wer weiß die genau Syntax?

Nochmals: Ich will, dass das Makro von der aktuellen Cursorposition aus um eine bestimmte Zahl Spalten nach rechts alles markiert. Die Zeile soll sich dabei nicht ändern.

Danke!

Guten Abend,

Anfrage dritter Anlauf (ich bin
inzwischen etwas schlauer geworden).

War das mein Posting schuld!?

Versuch es mal mit:
ActiveCell.Range(„A1:AE70“).Select

Das in " " gesetzte ist nur ein Beispiel.
Setz dort Deinen Auswahlbereich ein.

Viel Erfolg.

Gruss
WALTER

Hi,

vielleicht hilft Dir die Idee dieser Konstruktion weiter:

Sub test
StartZeile=1
EndZeile=6
Range(„A“ & Trim(Str(StartZeile)) & „:B“ & Trim(Str(EndZeile))).Select
End test

Ciao

Uwe

Nochmals: Ich will, dass das Makro von
der aktuellen Cursorposition aus um eine
bestimmte Zahl Spalten nach rechts alles
markiert. Die Zeile soll sich dabei nicht
ändern.

Danke!

Hallo Ludwig

Kennst Du eigentlich COLUMNS?

Um Dein Problem zu lösen musst Du folgende Syntax anwenden.

Range(Columns(activecell.column), columns(activecell.column + 7).select

Den Range Befehl kennst Du ja…

Mit Columns(Zahl oder String) kannst Du eine bestimmte Spalte auswählen, also z.B. Columns(„A“).select

mit activecell.column kannst Du die Spaltenzahl der aktiven Zelle auslesen. Wenn Du also den Cursor in der Spalte A plazierst, wird Dir dieser Befehl die Zahl 1 zurückliefern.

Wenn Du dahinter noch ein „+6“ anhängst, dann kannst Du damit einen z.B. die nächsten 6 Spalten auswählen.

Ich hoffe, ich konnte Dir damit helfen.

Gruss

Martin

Hallo, Martin - und andere nette Mitmenschen!

s_anf = ActiveCell.Column
zei_anf = ActiveCell.Row
ActiveCell.Range(„a1:ep1“).Select
Selection.Copy
Application.Goto Reference:=„R93C1“
ActiveSheet.Paste
Application.Goto Reference:=„Einzelzeugnisdruck“
Application.CutCopyMode = False
Selection.PrintOut Copies:=1, Collate:=True
Application.Goto Reference:=„h“
Application.Goto Reference:=„R((zei_anf)+1)C1“: Range

  1. danke für die Hilfe
  2. es bleibt noch ein Problem: das obige komplett abgedruckte Makro läuft fehlerfrei bis zur letzten Zeile:

Reference:=„R((zei_anf)+1)C1“: Range

Eigentlich soll der Cursor wieder zur anfänglichen Ausgangszeile zurückkehren. Doch hier bricht das Makro mit einer Fehlermeldung ab.

Ist die Syntax falsch?
Lese ich die Variable für die anfängliche Zeile falsch aus? Das wäre dann diese:

zei_anf = ActiveCell.Row

Wenn das noch klappen würde … es wäre super!

Danke,
Ludwig

Hi Ludwig,

Reference:=„R((zei_anf)+1)C1“: Range

Muß heißen:

Reference:=„R“ & (trim(str((zei_anf)+1))) & „C1“: Range

weil zei_anf ein Integer ist, der in den passenden String umgewandelt werden muß.

Ciao

Uwe

Das war’s! Herzlichen Dank!
Hallo Uwe,

jetzt freu ich mich richtig, dass es klappt!
Vielen Dank dir und den anderen Helfern!

Ludwig