Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
608to612
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
608to612
608to612
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Script verändern für Zwischensumme

Script verändern für Zwischensumme
15.05.2005 11:30:45
Nicole
Hallo !
Ich bin neu hier in eurem Forum und möchte euch erst mal ein dickes Kompliment machen.
Ich konnte mir mit eurer Hilfe ein sehr hilfreiches Rechnungsformular erstellen.
Nun habe ich aber ein Problem mit einem Script welches ich nicht lösen kann.
Das nachfolgende Script setzt mir beim drucken automatisch Zwischensummen
und Überträge in Kopf und Fußzeile egal wie man den Seitenumbruch verschiebt.
Dies funktioniert wirklich sehr zuverlässig.
Leider ist es bei Rechnungen ja so, dass auf der letzten Seite keine Zwischensumme
mehr in der Fußzeile erscheinen darf.
Kann mir jemand das Script so abändern, daß nur auf der letzten Seite die
Fußzeile oder zumindest der Eintrag in der Fußzeile nicht gesetzt wird.
Ihr würdet mir wirklich sehr helfen !!
Gruß Nicole
Option Explicit

Sub Seitenumbruch()
Dim varPB As Variant
Dim iPage As Integer, iRowL As Integer
Dim dSumA As Currency, dSumB As Currency
iRowL = Cells(Rows.Count, 2).End(xlUp).Row
iPage = 1
Do Until IsError(varPB)
varPB = ExecuteExcel4Macro( _
"INDEX(GET.DOCUMENT(64)," & iPage & ")")
If IsError(varPB) Then Exit Do
dSumA = WorksheetFunction.Sum(Range( _
Cells(1, 6), Cells(varPB - 1, 6)))
With ActiveSheet.PageSetup
.LeftHeader = "Baudienste"
.CenterHeader = "Übertrag  Seite: &P"
.RightHeader = Format(dSumB, "#,##0.00"" €""")
.CenterFooter = "Zwischensumme:"
.RightFooter = Format(dSumA, "#,##0.00"" €""")
End With
ActiveSheet.PrintOut From:=iPage, To:=iPage
dSumB = dSumA
iPage = iPage + 1
Loop
dSumB = dSumA
dSumA = WorksheetFunction.Sum(Range( _
Cells(1, 6), Cells(iRowL, 6)))
With ActiveSheet.PageSetup
.CenterHeader = "Übertrag  Seite: &P"
.RightHeader = Format(dSumB, "#,##0.00"" €""")
.CenterFooter = "Zwischensumme:"
.RightFooter = Format(dSumA, "#,##0.00"" €""")
End With
ActiveSheet.PrintOut From:=iPage, To:=iPage
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Script verändern für Zwischensumme
15.05.2005 12:38:13
Christoph
Hallo Nicole
ich kann dir nichs versprechen, da ich keinen Drucker installiert habe.
Aber kommentiere mal die letzten beiden "Footer-Anweisungen" aus:

'      .CenterFooter = "Zwischensumme:"
'      .RightFooter = Format(dSumA, "#,##0.00"" €""")
End With
ActiveSheet.PrintOut From:=iPage, To:=iPage
End Sub
Gruß
Christoph
AW: Script verändern für Zwischensumme
15.05.2005 12:59:07
Nicole
Hallo Christop
Danke für deine Antwort.
Es zeigt sich jedoch keine Veränderung !
Vielleicht hat noch jemand einen Vorschlag
AW: Script verändern für Zwischensumme
15.05.2005 13:49:31
Christoph
Hallo Nicole
dann musst du die Footer explizit zurückzetzen. Versuchs mal so
(um nicht allzuviel Paiper zu verschwenden kannst du statt "ActiveSheet.PrintOut ..." dir auch nur die Seitenasicht anzeigen lassen mit: ActiveWindow.SelectedSheets.printPreview
also nochmal die letzten Zeilen:

.CenterFooter = ""
.RightFooter = ""
End With
ActiveWindow.SelectedSheets.printPreview       'zum Test - Seitenansicht
'ActiveSheet.PrintOut From:=iPage, To:=iPage   'auskommentiert zum Test
End Sub
Gruß
Christoph
Anzeige
AW: Script verändern für Zwischensumme
15.05.2005 14:24:03
Nicole
Hallo Christoph
Nochmals Danke für deine Mühe
Aber ich glaube du hast meine Frage falsch verstanden.
Die Kopf und fußzeilen erscheinen weder in der
Seitenansicht noch in der normalen Tabelle
sondern werden erst beim Druck in die Blätter
eingesetzt. Nur in der Vorschau des Druckers (wenn man diese aktiviert)
werden sie sichtbar.Dies übenimmt alles das Script.
Es ist fürs Rechnungschreiben ein Vorteil,
da man keine manuellen Seitenumbrüche setzen muß.
Deshalb ist es so schwierig nur die letzte Fußzeile
zu entfernen.Dies kann nur im Script vorgenommen werden.
Anzeige
AW: Script verändern für Zwischensumme
15.05.2005 14:30:32
Bert
Hi,
mit GET.DOCUMENT(50) bekommst du die Anzahl der Seiten, das sollte als Ansatz reichen.
mfg Bert
Kopf- und Fußzeile variable
15.05.2005 14:33:54
Christoph
Hallo Nicole
ich widerspreche dir, dass in der Seitenansicht die Kopf- und Fußzeilen nicht zu sehen sind. Mein Vorschlag mit der Seitenansicht war auch nur als Test gedacht, um nicht jedesmal x Seiten ausdrucken zu müssen.
sollte ich dich dennoch missverstanden habe, dann stelle die Frage wieder auf offen.
Gruß
Christoph
Option Explicit

Sub Seitenumbruch()
Dim varPB As Variant
Dim iPage As Integer, iRowL As Integer
Dim dSumA As Currency, dSumB As Currency
iRowL = Cells(Rows.Count, 2).End(xlUp).Row
iPage = 1
Do Until IsError(varPB)
varPB = ExecuteExcel4Macro( _
"INDEX(GET.DOCUMENT(64)," & iPage & ")")
If IsError(varPB) Then Exit Do
dSumA = WorksheetFunction.Sum(Range( _
Cells(1, 6), Cells(varPB - 1, 6)))
With ActiveSheet.PageSetup
.LeftHeader = "Baudienste"
.CenterHeader = "Übertrag  Seite: &P"
.RightHeader = Format(dSumB, "#,##0.00"" €""")
.CenterFooter = "Zwischensumme:"
.RightFooter = Format(dSumA, "#,##0.00"" €""")
End With
ActiveWindow.SelectedSheets.printPreview       'zum Test - Seitenansicht
'ActiveSheet.PrintOut From:=iPage, To:=iPage   'auskommentiert zum Test
dSumB = dSumA
iPage = iPage + 1
Loop
dSumB = dSumA
dSumA = WorksheetFunction.Sum(Range( _
Cells(1, 6), Cells(iRowL, 6)))
With ActiveSheet.PageSetup
.CenterHeader = "Übertrag  Seite: &P"
.RightHeader = Format(dSumB, "#,##0.00"" €""")
.CenterFooter = ""
.RightFooter = ""
End With
ActiveWindow.SelectedSheets.printPreview       'zum Test - Seitenansicht
'ActiveSheet.PrintOut From:=iPage, To:=iPage   'auskommentiert zum Test
End Sub

Anzeige
AW: Kopf- und Fußzeile variable
15.05.2005 15:03:05
Nicole
Hallo Christoph
vielleicht habe ich mich da etwas falsch ausgedrückt.
Es werden keine aktuell berechneten Überträge und zwischenzummen
angezeigt. Angezeigt wird nur ein zu anfang gesetzter Wert. Dieser wird
aber bei Neuberechnung nicht aktuallisiert. Man erkennt in der Vorschau
nur falsche Werte die erst beim Ausdruck richtig sind.
Auch die Angabe der Seitenzahl ( Beitrag von Bernd bringt mich leider nicht weiter)
Trotzdem Danke
Nur zur Info: Im Moment löse ich das Problem so:
Ich habe zwei Scripte und habe bei einem die komplette Fußzeile
entfernt. Hiermit kann ich dann die letzte Seite ohne Fußzeile drucken
Ist halt sehr umständlich.
Gruß Nicole
Anzeige
AW: Kopf- und Fußzeile variable
15.05.2005 16:02:15
Oberschlumpf
Hi Nicole
Nur eine Überlegung...
Haben alle Seiten, bis auf die letzte Seite, immer die gleiche Anzahl an Druckzeilen (incl. Leerzeilen)?
Wenn dem so ist, kannst Du da nicht die Bedingung setzen:
Wenn Anzahl Druckzeilen von aktuelle Druckseite &lt als Anzahl Druckzeilen für ganze Seite
dann Ausdruck ohne Fußzeile (hier kannst Du ja Dein 2. Makro vielleicht einbauen.
wenn nicht (Else)
dann Ausdruck mit Kopf und Fußzeile
Ich hoffe Du hast verstanden, was ich meine. Konnte ich helfen?
Ciao
Thorsten
AW: Script verändern für Zwischensumme
15.05.2005 16:23:43
Peter
Hallo Nicole,
sollte es nicht so gehen:


Option Explicit
Sub Seitenumbruch()
   Dim varPB As Variant
   Dim iLeSe As Integer, iPage As Integer, iRowL As Integer
   Dim dSumA As Currency, dSumB As Currency
   
   iLeSe = ExecuteExcel4Macro("Get.Document(50)")
   
   iRowL = Cells(Rows.Count, 2).End(xlUp).Row
   iPage = 1
   Do Until IsError(varPB)
      varPB = ExecuteExcel4Macro( _
         "INDEX(GET.DOCUMENT(64)," & iPage & ")")
      If IsError(varPB) Then Exit Do
      dSumA = WorksheetFunction.Sum(Range( _
         Cells(1, 6), Cells(varPB - 1, 6)))
      If iLeSe < iPage Then
         With ActiveSheet.PageSetup
            .LeftHeader = "Baudienste"
            .CenterHeader = "Übertrag  Seite: &P"
            .RightHeader = Format(dSumB, "#,##0.00"" €""")
            .CenterFooter = "Zwischensumme:"
            .RightFooter = Format(dSumA, "#,##0.00"" €""")
         End With
       Else
         With ActiveSheet.PageSetup
            .LeftHeader = "Baudienste"
            .CenterHeader = "Übertrag  Seite: &P"
            .RightHeader = Format(dSumB, "#,##0.00"" €""")
            .CenterFooter = ""
            .RightFooter = ""
         End With
      End If
      ActiveSheet.PrintOut From:=iPage, To:=iPage
      dSumB = dSumA
      iPage = iPage + 1
   Loop
   dSumB = dSumA
   dSumA = WorksheetFunction.Sum(Range( _
      Cells(1, 6), Cells(iRowL, 6)))
   If iLeSe < iPage Then
      With ActiveSheet.PageSetup
         .CenterHeader = "Übertrag  Seite: &P"
         .RightHeader = Format(dSumB, "#,##0.00"" €""")
         .CenterFooter = "Zwischensumme:"
         .RightFooter = Format(dSumA, "#,##0.00"" €""")
      End With
   Else
      With ActiveSheet.PageSetup
         .CenterHeader = "Übertrag  Seite: &P"
         .RightHeader = Format(dSumB, "#,##0.00"" €""")
         .CenterFooter = ""
         .RightFooter = ""
      End With
   End If
   ActiveSheet.PrintOut From:=iPage, To:=iPage
End Sub


Viele Grüße Peter
Das Forum lebt auch von den Rückmeldungen.
Anzeige
AW: kleine Korrektur
15.05.2005 16:28:21
Peter
Hallo Nicole,
es muss natürlich


 If iPage < iLeSe Then


heißen - zweimal ändern bitte.
Viele Grüße Peter
Das Forum lebt auch von den Rückmeldungen.
Hallo Peter !! vielen, vielen DANK !!
15.05.2005 17:01:40
Nicole
Hi Peter,
Das klappt ganz wunderbar.
Ich bin begeistert.Ich habe schon gedacht
es gibt keine Lösung
Du hast mir die Arbeit sehr erleichtert
DANKE!! Nicole

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige