WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

 
 
Themen-Optionen Ansicht
Alt 06.04.2003, 15:43   #2
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

Ich bin mir nicht sicher ob ich deine Fragestellung so interpretieren soll, wie sie geschrieben steht. Falls du wirklich EINE TABELLE (Worksheet) hast, die eben beim Drucken über mehrere Seiten geht weil sie so viele Daten enthält, so hast du ein dezentes Problem.
Da im Objektmodell von Excel, zumindest in diesem Zusammenhang, keine Seiten vorkommen, kannst du auch keine Änderungen an Seiten abfragen. Allerdings kenne ich auch für die vorhandenen Objekte in Excel keine Möglichkeit, eine Änderung seit dem letzten Öffnen abzufragen. Man könnte sich in diesem Fall am ehesten damit behelfen, die Zeilennummern von geänderten Zellen mitzuloggen. Beim Ausdrucken müsste man dann allerdings wieder mit den PageBreaks herumhantieren um die zu den geänderten Zeilen gehörigen Seiten herauszubekommen. Dann könnte man diese als Druckbereich definieren und den Druck starten.

Falls du allerdings EINE ARBEITSMAPPE (Workbook) mit mehreren Tabellen (Worksheets) hast, so ist das Problem eher nicht so aufregend. In diesem Fall musst du nur die geänderten Sheets mitloggen und dann für diese das Drucken auslösen. Das liesse sich mit folgendem Code in der Arbeitsmappe (Workbook) bewerkstelligen:

---------------------------------------------------------------
Private DirtySheets() As String

Private Sub Workbook_BeforeClose(Cancel As Boolean)
PrintDirtySheets
End Sub

Private Sub Workbook_Open()
ReDim DirtySheets(Me.Worksheets.Count - 1)
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
DirtySheets(Sh.Index - 1) = Sh.Name
End Sub

Public Sub PrintDirtySheets()
Dim Names As String
Dim Answer As Integer
Dim Wsh As Worksheet
For Each SheetName In DirtySheets
If SheetName <> "" Then
If Names <> "" Then
Names = Names & ", " & SheetName
Else
Names = Names & SheetName
End If
End If
Next
If Names <> "" Then
Answer = MsgBox("Die Druckfunktion hat Änderungen in folgenden Sheets festgehalten:" & vbNewLine & vbNewLine & _
Names & vbNewLine & vbNewLine & _
"Sollen diese Sheets gedruckt werden?", _
vbQuestion + vbYesNo, _
"Druckfunktion")
If Answer = vbYes Then
For Each SheetName In DirtySheets
If SheetName <> "" Then
Set Wsh = Worksheets(SheetName)
' Wsh.PrintPreview ' zeigt Druckvorschau
Wsh.PrintOut ' druckt sofort
End If
Next
End If
Else
MsgBox "Die Druckfunktion hat keine Änderungen an Sheets festgehalten.", _
vbInformation + vbOKOnly, _
"Druckfunktion"
End If
End Sub
------------------------------------------------------
Seidl ist offline   Mit Zitat antworten
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:27 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag