Rysowanie obramowania u dołu strony na podstawie strony po stronie w makrze

Data utworzenia strony :

Przegląd

Podczas drukowania, myślę, że jest często używany jako ramka papieru, aby narysować obramowanie na nagłówku i czworakach. Jeśli jednak papier jest pojedynczym arkuszem, wystarczy narysować obramowanie ręcznie, ale jeśli stanie się ono więcej niż jedną stroną, obramowanie nie pojawi się u dołu każdej strony. Istnieje również ręczne wsparcie ponownego wyciągania, ale jeśli dodasz lub usuniesz linie w środku, będziesz musiał ponownie narysować obramowanie na wszystkich stronach.

W tej sekcji opisano sposób używania makr do automatycznego rysowania obramowań u dołu każdej strony.

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

Potwierdzona wersja operacji

Obsługiwana wersja programu Excel

  • 2010
  • 2007
  • 2003
  • (Może działać z innymi wersjami, ale nie jest potwierdzona.)

Upewnij się, że wersja programu Excel

  • 2010
  • 2007
  • 2003

Zawartość

1ページの印刷

Jeśli drukujesz pojedynczą stronę, możesz narysować obramowanie u dołu wiersza, aby wydrukować bez żadnych problemów.

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

Jeśli jednak masz więcej niż jedną stronę, możesz narysować obramowanie tylko u dołu wiersza, ale obramowanie nie pojawi się w dolnym wierszu każdej strony. Jeśli obramowanie ma być wyświetlane na każdej stronie, musisz ręcznie zastosować obramowanie do zmiany strony.

Jeśli jednak dodasz lub usuniesz linię w środku, linia podziału strony i linia obramowania zostaną obcięte, więc jest to kłopotliwe, ponieważ staje się ponownie rysowane.

Użyję więc makra do rysowania obramowania na linii zmiany strony zbiorczo.

ボタンの配置

Nie ma znaczenia, w jaki sposób go uruchomić, ponieważ można go uruchomić za pomocą wbudowanego makra, ale w próbce umieszczam przycisk na oddzielnym arkuszu i rysuję obramowanie na pograniczu strony po naciśnięciu przycisku.

Jeśli chcesz rozprowadzić coś, co już zawiera makra, możesz po prostu przekazać plik w takim stanie, w jakim jest, ale jeśli chcesz samodzielnie zmontować makro, ustaw excela, aby można było złożyć makro. Aby uzyskać informacje na temat tego, jak to zrobić, zobacz Wyświetlanie karty Programowanie, aby włączyć umieszczanie formularzy i tworzenie programów VBA .

マクロの登録

Po umieszczeniu przycisku zostanie wyświetlone okno dialogowe rejestracji makr, więc utwórzmy je, aby można było uruchomić zdarzenie kliknięcia, naciskając przycisk "Nowy".

Nie zamierzamy wchodzić w zbyt wiele szczegółów na temat makr lub języka Visual Basic, więc sprawdź to osobno.

Po otwarciu edytora Visual Basic dodaj następujący kod: Obramowanie na wierszu zmian na określonym arkuszu można narysować, wywołując tę funkcję.

Mam komentarz na temat opisu funkcji, więc proszę to sprawdzić.

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

Proces klikania przycisku jest następujący. Jeśli określisz arkusz dla utworzonej funkcji SetHPageBreakLines, można narysować obramowanie na tym arkuszu. Jeśli chcesz również określić styl obramowania, można go określić z pozostałymi argumentami.

Ponieważ jest to próbka, nazwa arkusza jest określona bezpośrednio w makrze, ale myślę, że bardziej ogólne jest, aby umożliwić napisanie nazwy arkusza w komórce i możliwość odwoływania się do komórki.

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

各ページ毎の罫線表示

Po uruchomieniu makra widać, że dolny wiersz każdej strony jest obramowany. Można również sprawdzić go w podglądzie wydruku.

Jako zastrzeżenie, myślę, że dobrze jest uruchomić makro tylko podczas drukowania, ponieważ obramowanie ustawione, gdy makro jest wykonywane raz nie może być zwrócone.