Een rand onder aan de pagina tekenen op pagina-per-paginabasis in een macro
Overzicht
Bij het afdrukken, ik denk dat het vaak wordt gebruikt als een frame van het papier om een rand te trekken op de header en alle en voeten. Als het papier echter één vel is, hoeft u de rand alleen handmatig te tekenen, maar als het meer dan één pagina wordt, wordt de rand niet onderaan elke pagina weergegeven. Er is ook een handmatige re-pull ondersteuning, maar als u lijnen in het midden toevoegt of verwijdert, moet u de rand op alle pagina's opnieuw tekenen.
In deze sectie wordt beschreven hoe u macro's gebruiken om automatisch randen onder aan elke pagina te tekenen.
Bevestigde versie van de bewerking
Ondersteunde Excel-versie
- 2010
- 2007
- 2003
- (Het kan werken met andere versies, maar het is niet bevestigd.)
Controleren of Excel-versie
- 2010
- 2007
- 2003
Inhoud
Als u één pagina afdrukt, u onderaan de regel een rand tekenen om zonder problemen af te drukken.
Als u echter meer dan één pagina hebt, u een rand alleen onder aan de regel tekenen, maar de rand wordt niet weergegeven in de onderste rij van elke pagina. Als u wilt dat de rand op elke pagina wordt weergegeven, moet u handmatig een rand toepassen op de paginawijziging.
Als u echter een regel in het midden toevoegt of verwijdert, worden de lijn van het pagina-einde en de lijn van de rand afgesneden, dus het is lastig omdat het opnieuw wordt.
Dus ik ga een macro gebruiken om een grens te tekenen op een lijn van paginawijziging in bulk.
Het maakt niet uit hoe het te starten, want je het uitvoeren met een ingebouwde macro, maar in het voorbeeld, plaats ik een knop op een apart blad en teken een rand op de pagina-einde als ik op de knop.
Als u iets wilt distribueren dat al macro's bevat, u het bestand gewoon doorgeven zoals het is, maar als u de macro zelf wilt monteren, stelt u excel in zodat u de macro assembleren. Zie Het tabblad Ontwikkeling weergeven om formulierplaatsing en VBA-programmaontwikkeling in te schakelen voor informatie over hoe u dit doen.
Wanneer u een knop plaatst, wordt het dialoogvenster macroregistratie weergegeven, dus laten we deze zo maken dat u de klikgebeurtenis uitvoeren door op de knop 'Nieuw' te drukken.
We gaan niet te veel in detail treden over macro's of Visual Basic, dus bekijk het apart.
Wanneer de Visual Basic-editor wordt geopend, voegt u de volgende code toe: U een rand tekenen op een rij paginawijzigingen op een opgegeven blad door deze functie aan te roepen.
Ik heb een opmerking over de beschrijving van de functie, dus controleer het.
'【概要】
' 改ページプレビューに合わせて、ページの下に黒の羅線を引きます。
'
'【引数】
' targetSheet : 改ページラインの描画対象シート
' lineStyle : 罫線のスタイル。XlLineStyle 列挙型から指定。
' lineWeight : 罫線の太さ。XlBorderWeight 列挙型から指定。
' lineColorIndex : 罫線の色。XlColorIndex 列挙型から指定、またはカラー パレットのインデックス値を指定。
'
'【備考】
' 一度罫線を設定すると戻せないので注意。
Private Sub SetHPageBreakLines(targetSheet As Worksheet, _
Optional lineStyle As XlLineStyle = xlContinuous, _
Optional lineWeight As XlBorderWeight = xlThin, _
Optional lineColorIndex As XlColorIndex = xlAutomatic)
' 列の最大位置取得
Dim maxColumn As Integer
maxColumn = targetSheet.UsedRange.Columns.Count
' 各ページ描画
For Each hpg In targetSheet.HPageBreaks
Dim row As Integer
Dim targetCell As Range
row = hpg.Location.row - 1
Set targetCell = targetSheet.Range(targetSheet.Cells(row, 1), targetSheet.Cells(row, maxColumn))
' 罫線のプロパティを設定する
With targetCell.Borders(xlEdgeBottom)
.lineStyle = lineStyle
.Weight = lineWeight
.ColorIndex = lineColorIndex
End With
Next
End Sub
Het klikproces van de knop is als volgt. Als u een blad opgeeft voor de functie SetHPageBreakLines die u hebt gemaakt, u een rand op dat blad tekenen. Als u ook een randstijl wilt opgeven, u deze opgeven met de resterende argumenten.
Omdat het een voorbeeld is, wordt de bladnaam direct in de macro opgegeven, maar ik denk dat het algemener is om de bladnaam in de cel te schrijven en naar de cel te kunnen verwijzen.
'【概要】
' ボタンクリックイベント
Sub ボタン1_Click()
' 対象シート
Dim syoriSheet As Worksheet
Set syoriSheet = Worksheets("ドキュメント")
' 罫線を設定
Call SetHPageBreakLines(syoriSheet)
' 下は線のスタイル指定
'Call SetHPageBreakLines(syoriSheet, xlContinuous, xlThin, xlAutomatic)
MsgBox syoriSheet.HPageBreaks.Count & "ページ分の線の設定が完了しました。"
End Sub
Wanneer u de macro uitvoert, u zien dat de onderste rij van elke pagina is omzoomd. U het ook controleren in Afdrukvoorbeeld.
Als een waarschuwing, ik denk dat het goed is om de macro alleen draaien bij het afdrukken, omdat de rand ingesteld wanneer de macro eenmaal wordt uitgevoerd kan niet worden geretourneerd.