Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

PrintTitleRows flexibel über Inputbox

PrintTitleRows flexibel über Inputbox
13.02.2008 16:30:00
Andreas
Hallo Herber Fans,
wie einige vielleicht bemerkt haben, war ich heute schon einige Male hier im Forum. Ich habe Informationen zu Inputboxen, Schleifen und FreezePanes bekommen, die ich alle als Einzelteile in ein gesamt- Makro überführt habe, welches den Anwender beim Einrichten von Seiten unterstützt.
Er kann festlegen, bei welcher Seite die Einrichtung starten soll, welchen Zoomfaktor er haben möchte, ob Fenster fixiert werden sollen, etc. Das läuft dann für alle Blätter durch.
Die Kür fehlt mir noch. Ich möchte auch die zu wiederholenden Druckzeilen flexibel festlegen lassen über eine Inputbox, die einen Range abfragt. Das ist mir auch schon geglückt, aber nicht 100%.
Wenn die Inputbox = False ist, ergo der User abbrechen geklickt hat, dann soll das Makro zur nächsten Option gehen. In meinem Fall der Eingabe des Startblattes für die Seiteneinrichtung.
An dieser Stelle behelfe ich mir mit If inputbox = false got to sprungmarke. Da die Sprungmarken aber meist schon der nachfolgende Abschnitt sind, macht es nicht richtig Sinn. Kann ich nicht sagen: „Wenn False, dann tue nichts und mach einfach weiter…“ Aber wenn ich ohne goto arbeite, dann hänge ich ewig in der Eingabemaske für die Startseite fest. Wenn der User dort auf abbrechen geht, soll er zum Zoom kommen. Wenn er dort abbricht, dann raus aus dem Makro. Das läuft auch schon. Mit den vielen Sprungmarken kann ich auch leben.
Was aber überhaupt nicht klappen will, ist die Eingabe von Wiederholungszeilen über Range Inputbox.
Wenn ich sinngemäß eintrage „Set Druckzeile = application.inputbox „ dann funktioniert die Auswahl sehr gut, aber beim Abbruch springt der Debugger an. Mit „on Error goto“ konnte ich es umgehen. Aber ich kann nicht wegen einer Code Komponente gleich für den ganzen Code ein „on Error goto“ definieren?!
Ohne Set funktioniert das Abbrechen, aber nicht mehr die Übergabe der selektierten Zeilen an den Code .printTitleRows = Druckzeile.address
Die Angabe für den Zoom des aktiven blattes habe ich hier oben untergebracht. Schöner wäre es nach dem Einrichten der Seite. Wenn der User die Angabe eines Startblattes verweigert, kommt er über eine sprungmarke zur Eingabe des Zoomes, der er so verändern kann, ohne die Seite ein zu richten. Ich hatte den Zoom schon einmal hinter dem Code für die Seiteneinrichtung mit dem Erfolg, daß ich dann bei drei Blättern drei Mal nach dem Zoomfaktor gefragt wurde. Wie kann das umgangen werden? Den Zoom komplett als eigenständiges Makro verpacken? Und dann If Startblatt = False call zoomMakro?
der bisherige (holprig laufende) Code:

Sub seiteeinrichtenrichtigkrass()
Dim Wahl
Dim i As Long
Dim zValue As Long
Dim Startblatt As Long
Dim Druckzeile As Range
'On Error GoTo Sprungmarke_Startblatt
Druckzeile = Application.InputBox("Bitte einen Bereich auswählen:", Type:=8)
'If Druckzeile = False Then GoTo Sprungmarke_Startblatt
Sprungmarke_Startblatt:
Do
Startblatt = Application.InputBox("Startblatt für Seiteneinrichtung", "Drucken", 1,  _
Type:=1)
If Startblatt = False Then GoTo Sprungmarke_Zoom                                         _
'Wenn ich das auskommentiere, geht es bei Abbruch nicht weiter
Loop While Startblatt = 0
Sprungmarke_Zoom:
Do
zValue = Application.InputBox("Zoomfaktor", "Drucken", 100, Type:=1)
If zValue = False Then GoTo Sprungmarke_Fenster
Loop While zValue = 0
For i = Startblatt To Sheets.Count               'Ich hatte es auch schon über eine Sprunmarke  _
realisieren können
With Sheets(i).PageSetup
.PrintTitleRows = Druckzeile.Address               'Wiederholungszeilen für Druck
.PrintTitleColumns = False              '"$A:$A"
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = _
"&8TEST"
.CenterFooter = "&8&P of &N"
.RightFooter = "&8&D" & Chr(10) & "&F, &A"
End With
With Sheets(i)
.Activate
ActiveWindow.Zoom = zValue
End With
Next i
Sprungmarke_Fenster:
Wahl = MsgBox("Fensterfixierung einstellen?", vbOKCancel)
Select Case Wahl
Case 1
Call FensterFixierung
Case 2
Exit Sub
End Select
End Sub



Sub FensterFixierung()
Dim strAdresse As String
Dim i As Integer
Dim rng As Range
On Error GoTo ERRORHANDLER
Set rng = Application.InputBox("Bitte einen Bereich auswählen:", Type:=8)
strAdresse = rng.Address
For i = 2 To Sheets.Count
With Sheets(i)
.Activate
ActiveWindow.FreezePanes = False       'erst einmal alle fixierungen rausnehmen  _
und die neuen setzen
.Range("A1").Select
.Range(strAdresse).Select
ActiveWindow.FreezePanes = True
End With
Next i
ERRORHANDLER:
End Sub


Kann den Tipp geben, wie ich die Probleme beim Einlesen und Übergeben der Druckzeilen verhindern kann?
Vielen Dank für Eure Mühe.
Gruß,
Andreas

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PrintTitleRows flexibel über Inputbox
13.02.2008 22:27:00
Daniel
Hi
wenn du eine DO - Schleife bei einer bestimmten Bedingung verlassen willst, dann geht das am elegantesten mit:

Do
If Bedingung = True Then Exit Do
Loop


das kannst du an jeder Stelle innerhalb der Do-Schleife plazieren, falls die Bedingung erfüllt ist, wird mit dem nächsten Befehl nach LOOP weitergemacht.
zum ersten Problem (Druckbereich eingeben):
hier arbeitest du mit einer Objektvariablen (RANGE), daher muss die Zuweisung immer mit SET erfolgen.
ich würde das ganze so lösen:


On Error Resume next
Set Druckzeile = Application.InputBox("Bitte einen Bereich auswählen:", Type:=8)
On Error Goto 0
Do
Startblatt = Application.InputBox("Startblatt für Seiteneinrichtung", "Drucken", 1, _
Type:=1)
With Sheets(i).PageSetup
if not Druckzeile is Nothing then .PrintTitleRows = Druckzeile.Address
...       


Gruß, Daniel

Anzeige
AW: PrintTitleRows flexibel über Inputbox
22.02.2008 13:11:00
Andreas
Hallo Daniel,
vielen Dank für Deine Korrekturen und die dazugehörigen Erläuterungen. Ich hoffe, ich komme heute nun endlich dazu es zu testen und nach zu voll ziehen.
Dir ein schönes baldiges Wochenende.
Gruß aus Berlin, Andreas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige