Sidetal i VBA

01/25/2012 by admin

Steve er på udkig efter en måde at afgøre, i en VBA makro, antallet af sider, som et regneark vil have, når de udskrives, og sidetallet, hvor en given celle vil udskrive. Denne opgave er ikke helt så let, som man kunne håbe, men det kan gøres.

Det ser ud til, at den bedste måde at håndtere dette på er at bruge en forældet (men stadig tilgængelig) Excel 4 funktion til at bestemme det samlede antal udskrevne sider i et regneark. Derefter kan du bruge de HPageBreaks og VPageBreaks samlinger at regne ud, hvor cellen falder i matrix af sider, der skal udskrives. Det følgende er et eksempel på en makro, der udnytter disse elementer:

Sub PageInfo ()
Dim iPages As Integer
Dim iCol As Integer
Dim iCols As Integer
Dim lRows så længe
Dim lRow så længe
Dim x As Long
Dim y så længe
Dim iPage As Integer

iPages = ExecuteExcel4Macro ("Get.Document (50)")

Med ActiveSheet
y = ActiveCell.Column
iCols = .VPageBreaks.Count
x = 0
Gøre
X = x + 1
Loop Indtil x = iCols _
Eller y <.VPageBreaks (x) .Location.Column
iCol = x
Hvis y> = .VPageBreaks (x) .Location.Column Så
iCol = iCol + 1
End hvis

y = ActiveCell.Row
lRows = .HPageBreaks.Count
x = 0
Gøre
X = x + 1
Loop Indtil x = lRows _
Eller y <.HPageBreaks (x) .Location.Row
lRow = x
Hvis y> = .HPageBreaks (x) .Location.Row Så
lRow = lRow + 1
End hvis

Hvis .PageSetup.Order = xlDownThenOver Så
iPage = (iCol - 1) * (lRows + 1) + lRow
Andet
iPage = (lRow - 1) * (iCols + 1) + iCol
End hvis
End med
MsgBox "Cell" & ActiveCell.Address & _
"Er på" & vbCrLf & "Side" & _
iPage & "af" & iPages & "sider"
End Sub

En ting, du skal huske på, med denne macro er, at HPageBreaks og VPageBreaks samlinger kun betragtes som nøjagtige, hvis du ser på regneark i Page Break Eksempel (View | Page Break Preview). Således vil du ønsker at sikre dig, at du er i denne tilstand, før du vælger en celle og kører makroen.

ExcelTips er din kilde til omkostningseffektiv Microsoft Excel træning. Dette tip (3135) gælder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finde en version af dette tip til båndet grænseflade Excel (Excel 2007 og nyere) her: Sidetal i VBA.


Relaterede Artikler

© 2018 - zajacperrone.com| Contact us: webmaster# zajacperrone.com