Een rand onder aan de pagina tekenen op pagina-per-paginabasis in een macro

Aanmaakdatum van pagina :

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

1ページの印刷

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.