Det kan kun lade sig gøre via programmring, koden er langsom. og den er heller ikke helt nem at bruge, hvis du skal have sidenummeret til at stå mere end et sted - og det skal du, hvis der er flere sider.
Men her er koden - eller retter koderne, for der skal flere makroer til, for at løse problemet:
Function GetPageNumber(Rng As Range) As Long 'NOTE: Rng must be a cell on the active sheet Dim PrintAreaAddress As String, rngPrintArea As Range Dim R0 As Long, C0 As Long Dim PAHeight As Long, PAWidth As Long Dim Down As Long, Across As Long Dim Outside As Long
With Rng.Parent PrintAreaAddress = ExecuteExcel4Macro("GET.DOCUMENT(81)") If PrintAreaAddress <> "" Then Set rngPrintArea = .Range(PrintAreaAddress) Else With .UsedRange Set rngPrintArea = .Cells(.Cells.Count) End With Set rngPrintArea = .Range(.Cells(1, 1), rngPrintArea) End If End With
If Intersect(Rng, rngPrintArea) Is Nothing Then GetPageNumber = 0 Exit Function End If
R0 = rngPrintArea.Row PAHeight = GetRowBreaks(R0 + rngPrintArea.Rows.Count - 1) + 1 Down = GetRowBreaks(Rng.Row) + 1 If R0 > 1 Then Outside = GetRowBreaks(R0) PAHeight = PAHeight - Outside Down = Down - Outside End If
C0 = rngPrintArea.Column PAWidth = GetColBreaks(C0 + rngPrintArea.Columns.Count - 1) + 1 Across = GetColBreaks(Rng.Column) + 1 If C0 > 1 Then Outside = GetColBreaks(C0) PAWidth = PAWidth - Outside Across = Across - Outside End If
If ExecuteExcel4Macro("GET.DOCUMENT(61)") = 1 Then GetPageNumber = PAHeight * (Across - 1) + Down Else GetPageNumber = PAWidth * (Down - 1) + Across End If End Function
Private Function GetColBreaks(ColNum As Long) As Long Dim sTemp As String sTemp = Replace("MATCH(#,GET.DOCUMENT(65),1)", "#", ColNum) On Error Resume Next GetColBreaks = ExecuteExcel4Macro(sTemp) End Function
Kan man ikke lave noget enklere med .VPageBreaks og .HPageBreaks? jeg har ikke nogen færdig løsning, men man kan i hvert fald finde cellerne med sideskifte med nedenstående skitserede kode: Sub pages() Dim vpb As VPageBreak Dim hpb As HPageBreak For Each vpb In Worksheets(1).VPageBreaks ' brug vpb.Location.Address Next For Each hpb In Worksheets(1).HPageBreaks ' brug hpb.Location.Address Next
stefanfuglsang-> Jeg kan godt finde sideskiftene med din kode, men jeg skal stadig have at vide hvilket sidenummer, der er tale om. Og da udskriften kan gå både på tværs og nedad, er det ikke givet bare ved et sideskift. Den samme side kan fx være side 2 hvis der udskrives den ene vej, og side 19, hvis der udskrives den anden.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.