Seitenzahlen in VBA (Microsoft Excel)
Steve sucht nach einer Möglichkeit, in einem VBA-Makro die Anzahl der Seiten eines Arbeitsblatts beim Drucken und die Seitenzahl zu bestimmen, auf der eine bestimmte Zelle gedruckt wird. Diese Aufgabe ist nicht ganz so einfach, wie man hoffen würde, aber sie kann erledigt werden.
Es scheint, dass der beste Weg, dies zu handhaben, darin besteht, eine veraltete (aber immer noch verfügbare) Excel 4-Funktion zu verwenden, um die Anzahl der insgesamt gedruckten Seiten in einem Arbeitsblatt zu bestimmen. Anschließend können Sie mithilfe der HPageBreaks- und VPageBreaks-Sammlungen herausfinden, wo sich die Zelle in der Matrix der zu druckenden Seiten befindet. Das folgende Beispiel zeigt ein Makro, das diese Elemente verwendet:
Sub PageInfo() Dim iPages As Integer Dim iCol As Integer Dim iCols As Integer Dim lRows As Long Dim lRow As Long Dim x As Long Dim y As Long Dim iPage As Integer iPages = ExecuteExcel4Macro("Get.Document(50)") With ActiveSheet y = ActiveCell.Column iCols = .VPageBreaks.Count x = 0 Do x = x + 1 Loop Until x = iCols _ Or y < .VPageBreaks(x).Location.Column iCol = x If y >= .VPageBreaks(x).Location.Column Then iCol = iCol + 1 End If y = ActiveCell.Row lRows = .HPageBreaks.Count x = 0 Do x = x + 1 Loop Until x = lRows _ Or y < .HPageBreaks(x).Location.Row lRow = x If y >= .HPageBreaks(x).Location.Row Then lRow = lRow + 1 End If If .PageSetup.Order = xlDownThenOver Then iPage = (iCol - 1) (lRows + 1) + lRow Else iPage = (lRow - 1) (iCols + 1) + iCol End If End With MsgBox "Cell " & ActiveCell.Address & _ " is on " & vbCrLf & "Page " & _ iPage & " of " & iPages & " pages" End Sub
Beachten Sie bei diesem Makro, dass die HPageBreaks- und VPageBreaks-Sammlungen nur dann als korrekt angesehen werden, wenn Sie das Arbeitsblatt in der Seitenumbruchvorschau (Ansicht | Seitenumbruchvorschau) anzeigen. Stellen Sie daher sicher, dass Sie sich in diesem Modus befinden, bevor Sie eine Zelle auswählen und das Makro ausführen.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (3135) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: