Vẽ viền ở cuối trang trên cơ sở từng trang trong macro

Ngày tạo trang :

Tổng quan

Khi in, tôi nghĩ rằng nó thường được sử dụng như một khung giấy để vẽ một đường viền trên tiêu đề và tất cả bốn chân. Tuy nhiên, nếu giấy là một tờ duy nhất, bạn chỉ cần vẽ đường viền theo cách thủ công, nhưng nếu nó trở nên nhiều hơn một trang, viền sẽ không xuất hiện ở cuối mỗi trang. Ngoài ra còn có hỗ trợ kéo lại thủ công, nhưng nếu bạn thêm hoặc loại bỏ các đường ở giữa, bạn sẽ phải vẽ lại viền trên tất cả các trang.

Phần này mô tả cách sử dụng macro để tự động vẽ đường viền ở cuối mỗi trang.

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

Phiên bản đã xác nhận của thao tác

Phiên bản Excel được hỗ trợ

  • 2010
  • 2007
  • 2003
  • (Nó có thể làm việc với các phiên bản khác, nhưng nó không được xác nhận.)

Đảm bảo phiên bản Excel

  • 2010
  • 2007
  • 2003

Nội dung

1ページの印刷

Nếu bạn in một trang duy nhất, bạn có thể vẽ một biên giới ở dưới cùng của dòng để in mà không có bất kỳ vấn đề.

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

Tuy nhiên, nếu bạn có nhiều trang, bạn chỉ có thể vẽ viền ở cuối dòng, nhưng viền sẽ không xuất hiện ở hàng dưới cùng của mỗi trang. Nếu bạn muốn viền xuất hiện trên mỗi trang, bạn phải áp dụng viền theo cách thủ công để thay đổi trang.

Tuy nhiên, nếu bạn thêm hoặc loại bỏ một dòng ở giữa, dòng ngắt trang và dòng biên giới được cắt bỏ, do đó, nó là rắc rối bởi vì nó sẽ trở thành một tái vẽ một lần nữa.

Vì vậy, tôi sẽ sử dụng một macro để vẽ một đường viền trên một dòng thay đổi trang với số lượng lớn.

ボタンの配置

Nó không quan trọng cách nào để bắt đầu nó bởi vì bạn có thể chạy nó với một vĩ mô được xây dựng trong, nhưng trong mẫu, tôi đặt một nút trên một tờ riêng biệt và vẽ một đường viền trên ngắt trang khi tôi nhấn nút.

Nếu bạn muốn phân phối một cái gì đó đã chứa macro, bạn chỉ có thể vượt qua các tập tin như nó được, nhưng nếu bạn muốn lắp ráp vĩ mô cho mình, thiết lập excel để bạn có thể lắp ráp vĩ mô. Để biết thông tin về cách thực hiện việc này, hãy xem Hiển thị tab Phát triển để cho phép xếp lớp biểu mẫu và phát triển chương trình VBA.

マクロの登録

Khi bạn đặt một nút, hộp thoại đăng ký macro được hiển thị, vì vậy hãy tạo nó để bạn có thể chạy sự kiện nhấp chuột bằng cách nhấn nút "Mới".

Chúng tôi sẽ không đi vào quá nhiều chi tiết về macro hoặc Visual Basic, vì vậy hãy kiểm tra xem nó ra một cách riêng biệt.

Khi trình soạn thảo Visual Basic mở ra, hãy thêm mã sau: Bạn có thể vẽ viền trên một hàng thay đổi trang trên một trang tính đã chỉ định bằng cách gọi hàm này.

Tôi có một bình luận về mô tả của các chức năng, vì vậy xin vui lòng kiểm tra xem nó.

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

Quá trình nhấp chuột của nút như sau. Nếu bạn chỉ định một trang tính cho hàm SetHPageBreakLines mà bạn đã tạo, bạn có thể vẽ một đường viền trên trang tính đó. Nếu bạn cũng muốn chỉ định một kiểu viền, bạn có thể chỉ định nó với các đối số còn lại.

Bởi vì nó là một mẫu, tên trang tính được chỉ định trực tiếp trong vĩ mô, nhưng tôi nghĩ rằng nó là tổng quát hơn để làm cho nó có thể viết tên tờ trong tế bào và để có thể tham khảo các tế bào.

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

各ページ毎の罫線表示

Khi bạn chạy macro, bạn có thể thấy rằng hàng dưới cùng của mỗi trang được viền. Bạn cũng có thể kiểm tra nó trong Xem trước khi In.

Như một caveat, tôi nghĩ rằng nó là tốt để chạy vĩ mô chỉ khi in ấn vì biên giới thiết lập khi vĩ mô được thực hiện một lần không thể được trả lại.