Rita en kantlinje längst ned på sidan på basis av sida i ett makro

Datum för skapande av sida :

Översikt

Vid utskrift, tror jag att det ofta används som en ram av papperet för att rita en kant på huvudet och alla fyra. Om papperet däremot är ett enda ark behöver du bara rita kantlinjen manuellt, men om det blir mer än en sida visas inte kantlinjen längst ned på varje sida. Det finns också en manuell re-pull stöd, men om du lägger till eller ta bort linjer i mitten, måste du åter rita gränsen på alla sidor.

I det här avsnittet beskrivs hur du använder makron för att automatiskt rita kantlinjer längst ned på varje sida.

マクロで改ページ単位でページ下部に罫線を引く

Bekräftad version av åtgärden

Excel-version som stöds

  • 2010
  • 2007
  • 2003
  • (Det kan fungera med andra versioner, men det bekräftas inte.)

Kontrollera att Excel-versionen

  • 2010
  • 2007
  • 2003

Innehållet

1ページの印刷

Om du skriver ut en enskild sida kan du rita en kantlinje längst ned på raden för att skriva ut utan problem.

複数ページ印刷時の最下行

Om du har fler än en sida kan du dock rita en kantlinje endast längst ned på linjen, men kantlinjen visas inte på den nedersta raden på varje sida. Om du vill att kantlinjen ska visas på varje sida måste du använda en kantlinje manuellt för sidändringen.

Men om du lägger till eller tar bort en linje i mitten, är raden i sidbrytningen och gränsens linje avklippta, så det är besvärligt eftersom det blir en re-draw igen.

Så jag ska använda ett makro för att rita en kant på en rad sidbyte i bulk.

ボタンの配置

Det spelar ingen roll vilket sätt att starta det eftersom du kan köra den med ett inbyggt makro, men i provet placerar jag en knapp på ett separat ark och ritar en kant på sidbrytningen när jag trycker på knappen.

Om du vill distribuera något som redan innehåller makron kan du bara skicka filen som den är, men om du vill sätta ihop makrot själv, ställ in Excel så att du kan sätta ihop makrot. Information om hur du gör detta finns i Visa fliken Utveckling för att aktivera utveckling av formulärplacering och VBA-programutveckling .

マクロの登録

När du placerar en knapp visas makroregistreringsdialogialen, så låt oss skapa den så att du kan köra klickhändelsen genom att trycka på knappen "Nytt".

Vi kommer inte att gå in för mycket detaljer om makron eller Visual Basic, så kolla upp det separat.

När Visual Basic-redigeraren öppnas lägger du till följande kod: Du kan rita en kantlinje på en rad med sidändringar på ett angivet blad genom att anropa denna funktion.

Jag har en kommentar om beskrivningen av funktionen, så var snäll och kontrollera den.

'【概要】
' 改ページプレビューに合わせて、ページの下に黒の羅線を引きます。
'
'【引数】
' 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

Knappens klickprocess är följande. Om du anger ett blad för funktionen SetHPageBreakLines som du skapade kan du rita en kantlinje på det bladet. Om du också vill ange ett kantlinjeformat kan du ange det med de återstående argumenten.

Eftersom det är ett prov anges arknamnet direkt i makrot, men jag tror att det är mer allmänt att göra det möjligt att skriva arknamnet i cellen och att kunna referera till cellen.

'【概要】
'  ボタンクリックイベント
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

各ページ毎の罫線表示

När du kör makrot kan du se att den nedersta raden på varje sida är kantad. Du kan också kontrollera det i Förhandsgranska.

Som en varning tycker jag att det är bra att köra makrot endast vid utskrift eftersom den kantuppsättning när makrot utförs en gång inte kan returneras.