436 Aufrufe
Gefragt in Tabellenkalkulation von peko Mitglied (235 Punkte)
Hallo liebe VBA-Experten!

Kann mir jemand ein ausführliches Beispiel zukommen lassen, wie ich einen Druckbereich über Variablen bestimmen lassen kann?

Hatte diese Frage schon einmal gestellt, kann aber mit den Antworten leider nichts mehr anfangen. Seufz!

Vielen Dank

peko

11 Antworten

0 Punkte
Beantwortet von
Hallo Peko

ActiveSheet.PageSetup.PrintArea = "A1:C20"

Die Definierung ist in Gänsefüßchen gefasst,also ein String

Als Definierung sind Locale/Globale/Mehrdimensionale Stringvarriablen möglich

Parallele bezüge im Vba Code wären mit dem Index eines Worksheets und dem Index eines mehrdimensionalen Array möglich

z.b. mit 3 Worksheets(Index)

Index 1-3

Dim Druckb(1 to 3) as String

Druckb(Index)

Index 1-3

Gruß Nighty
0 Punkte
Beantwortet von peko Mitglied (235 Punkte)
Hallo Nighty,

danke, aber ich verstehe das alles nicht. Kannst du nicht die Auflistung eines Makros schicken, das z.B. Zelle Zeile 3, Spalte 5 bis Zelle Zeile 17, Spalte 9 als Druckbereich zuweist?

Ich hoffw, das dann umsetzen zu können. Danke im Voraus.

LG peko
0 Punkte
Beantwortet von
Hallo Peko

ActiveSheet.PageSetup.PrintArea = "E3:I17"

ergänzend zur obigen Info

Ein Ereignismodul in der Arbeitsmappe/Worksheetwechsel könnte obiges händeln und verschiedene Bereiche bereit halten,statt des Worksheet Index geht natürlich auch eine mehrdimensionale Strin Variable mit Namen

Auch hier wieder eine Dimensionierung (1 to 3) um Parallel zu arbeiten

Gruß Nighty
0 Punkte
Beantwortet von peko Mitglied (235 Punkte)
Tut mir leid, Nighty, so kann ich damit nichts anfangen. Meine Frage ist: Kann ich die Festlegung des Druckbereichs in Variablen angeben?

Trotzdem danke für deine Bemühungen.

Gruß peko
0 Punkte
Beantwortet von peko Mitglied (235 Punkte)
Zur Präzisierung meiner Frage:

Durch

Range(Cells(i,  j), Cells(x, y)).Select

kann ich variabel über i, j, x und y einen Bereich festlegen. Geht so etwas auch für den Druckbereich?

Nochmals Grüße

peko
0 Punkte
Beantwortet von
Hallo Peko

Eine mögliche Variante!

With ActiveSheet

 .PageSetup.PrintArea = .Range(.Cells(Y, X) , .Cells(Y, X)).Address

End With

Gruß Nighty
0 Punkte
Beantwortet von
Hallo Peko

Oder auch

 ActiveSheet.PageSetup.PrintArea = ActiveSheet.Range(ActiveSheet.Cells(Y, X) ,ActiveSheet .Cells(Y, X)).Address

Gruß Nighty
0 Punkte
Beantwortet von
Hallo Peko

Oder auch mehrere Bereiche

Gruß Nighty

With ActiveSheet

.PageSetup.PrintArea =Union(.Range(.Cells(Y, X) , .Cells(Y, X),.Range(.Cells(Y, X) , .Cells(Y, X)).Address

End With
+1 Punkt
Beantwortet von
Hallo Peko

Korrigiert

Der Bezug ist vorhanden,daher ohne weitere Sheet Angabe innerhalb von Range oder Union

 ActiveSheet.PageSetup.PrintArea = Range(Cells(Y, X) ,Cells(Y, X)).Address

oder

ActiveSheet.PageSetup.PrintArea =Union(Range(Cells(Y, X) ,Cells(Y, X),Range(Cells(Y, X) ,Cells(Y, X)).Address

Gruß Nighty
0 Punkte
Beantwortet von
Hallo Peko

Korrigiert

Der Bezug ist vorhanden,daher ohne weitere Sheet Angabe innerhalb von Range oder Union

 ActiveSheet.PageSetup.PrintArea = Range(Cells(Y, X) ,Cells(Y, X)).Address

oder

ActiveSheet.PageSetup.PrintArea =Union(Range(Cells(Y, X) ,Cells(Y, X),Range(Cells(Y, X) ,Cells(Y, X)).Address

Gruß Nighty
...