こんにちは。
ちょっと確認したいのですが、
------------------------------ ←細線
------------------------------ ←細線
------------------------------ ←細線
・
・
------------------------------ ←細線
--------------- ←太線(改ページ)
------------------------------ ←細線
------------------------------ ←細線
その部分を変更するのですね。
つまり、ずっと繋がっているということなのでしょうか?
こんなマクロコードを考えてみました。
設定の方法:
Alt + F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。
次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、再び、Alt + F11 で、画面を閉じます。
後は、フォーム・ツールやコントロールツールのボタンや、ショートカットにすると便利かと思います。
ユーザー設定変更部分:
現在、仮に設定されています。
Const Cl As Integer = 6 ' 6セル分の長さの線を引く
Cells(hc, 1) 1列目だから、1 が入れてあります。B列だったら、2になります。
With Cells(hc, 1).Resize(, Cl).Borders(xlEdgeBottom)
このマクロは、表の一番最初の部分には太線は引かれません。
また、表の一番最後の部分は、改ページ位置ではなく、印刷の終わりに引かれます。
'<標準モジュール>
Option Explicit
Sub PageLineThickness()
Dim TotalPage As Long, i As Long, j As Integer, MaxRow As Long
Dim pa As String, hc As Long, bhc As Long
Const Cl As Integer = 6 ' 6セル分の長さの線を引く
pa = ActiveSheet.PageSetup.PrintArea
MaxRow = Range(pa).Row + Range(pa).Rows.Count - 1
TotalPage = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
If Range(pa).Row <> 1 Then
j = 2
Else
j = 1
End If
Application.ScreenUpdating = False
For i = j To TotalPage
hc = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64),1, " & i & ")")
'A列(1)から、セルを引く
If i = TotalPage Then
hc = MaxRow '最後のページのみ、最終行に入れる
End If
'A列(,1) から、セルの長さを引く
With Cells(hc, 1).Resize(, Cl).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
bhc = hc
Next i
Application.ScreenUpdating = True
MsgBox "終了です。"
End Sub
お礼
ご回答ありがとうございます。 ご教示いただいたコードに一部手を加えるかたちで、 当初考えていた以上のものができました。 本当に助かりました。ありがとうございます!