Komplexes Druck-Problem - Din total verzweifelt

Hallo zusammen,
ich habe ein Problem mit dem Ausdrucken meiner MSFLexGrid Tabelle. Ich habe einen
CommonDialog Drucken eingebaut, damit der User hier selber entscheiden kann was
er ausdrucken will. Geht ehr auf „Alles“, dann ist das gar kein Problem, und ich
kann das ohne Probleme ausdrucken.
Aber wie mach ich es nun, dass nur die Markierung ausdrucken, und wie schaff ich
es, dass ich nur die Seiten 1 - 3 und dann z. B. die Seiten 5 - 9 ausdrucken
kann. Ich hab jetzt mal was mit FromPage und ToPage eingebaut, doch allesdings
druckt er, wenn ich die Seiten 5 - 9 angebe, auf der Seite 5 alles von den Seiten
1-5 auf die Seite 5. Die restlichen Seiten stimmen dann.

Ich kopier mal den Code hier her:

Sub PrintGrid(Grid As MSFlexGrid, ByVal LeftMargin As Single, _
ByVal TopMargin As Single, ByVal RightMargin As _
Single, ByVal BottomMargin As Single, Titel As _
String, Datum As String, Optional many As Integer)

Dim tRange As TFormatRange
Dim lReturn As Long
Dim DName As String
Dim DSchacht As Integer
Dim gbeg As Long
Dim CopyCW() As Long
Dim GRef As Boolean
Dim X%

'lReturn = „“

seitenzahl = 0
tblausgabe1.FontSize = 6.5

GRef = False
If many > 0 Then
’ Anzahl der zu druckenden Colums festlegen
’ Alles > many wird auf colwidth = 0 gesetzt
If Grid.Cols > many Then
gbeg = Grid.Cols - many
ReDim CopyCW(gbeg)
Grid.Redraw = False
For X = many To Grid.Cols - 1
CopyCW(X - many) = Grid.ColWidth(X)
Grid.ColWidth(X) = 0
Next X
GRef = True
Else
End If
Else
End If
Printer.Orientation = 2
'mit wParam 0 kann überprüft werden
'ob das Control OPP unterstützt, wenn ja wird
'456654 (VP_YESIDO) zurückgeliefert
lReturn = SendMessage(Grid.hWnd, VP_FORMATRANGE, 1, 0)
'Schleife Seite Anzahl der Seiten

If lReturn = VP_YESIDO Then
'Struktur mit Formatierungsinformationen füllen
Printer.ScaleMode = vbPixels

With tRange
.hdc = Printer.hdc

'Höhe und Breite einer Seite (in Pixel)
.rcPage.Right = Printer.ScaleWidth
.rcPage.Bottom = Printer.ScaleHeight

'Lage und Abmessungen des Bereichs auf den
'gedruckt werden soll (in Pixel)
.rc.Left = Printer.ScaleX(10, vbMillimeters)
.rc.Top = Printer.ScaleY(TopMargin, vbMillimeters)
.rc.Right = .rcPage.Right - Printer.ScaleX(10, vbMillimeters)
.rc.Bottom = .rcPage.Bottom - Printer.ScaleY(BottomMargin,
vbMillimeters)
End With

'Drucker initialisieren
Printer.Print vbNullString
'Seite(n) drucken
Do
Printer.CurrentX = Printer.ScaleX(LeftMargin, vbMillimeters)
Printer.CurrentY = Printer.ScaleY(10, vbMillimeters)
'Abbruch wegen Seitenbeschränkung
If seitenzahl = CommonDialog1.ToPage Then GoTo DruckEndeSeite

seitenzahl = seitenzahl + 1
Printer.CurrentX = 1
Printer.CurrentY = 1
lReturn = SendMessage(Grid.hWnd, VP_FORMATRANGE, 0, VarPtr
(tRange))
'Beginn Druck
If lReturn

Hallo Jochen,

spät, aber doch :wink:

hab Deinen Code nicht ausprobiert (dazu fehlen mir noch ein paar Definitionen, die nicht in dem Fragment enthalten sind), aber ihn theoretisch mal durchgespielt. Mir scheint, Du solltest noch vor der loop-Schleife den Seitenzähler seitenzahl auf CommonDialog1.FromPage setzen, damit er auch erst bei dieser Seite anfängt. Sonst startet er ja mit Seite 1.

Wenn ich damit falsch liege, kannst Du mir ja mal das ganze Projekt mailen (falls es keine geheimen Daten enthält *g*)

Gruß

Sculpture