OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

EXCELの罫線について

  • 暇なときにでも
  • 質問No.141685
  • 閲覧数644
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 0% (0/2)

表を作成し、外枠を太線に、内側の横罫線を細線にしています。
複数ページにまたがった時に、最終ページ以外は最終行が細線になります。
行数が変わっても、最終行を太線にする方法があったら教えて下さい。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル13

ベストアンサー率 68% (791/1163)

回答がありませんね。Excelの印刷機能だけではしかたないでしょうね。 それでは回答にならないと思い、参考に下記のマクロを書いてみました。 印刷範囲を設定して、ツール→マクロ→マクロでLineChangeを実行すれば各頁を太枠で囲んだ印刷になると思います。今は印刷プレビューにしてあります。PrintPreviewをPrintOutにすれば印刷します。(Excel2000です) やってることは単純 ...続きを読む
回答がありませんね。Excelの印刷機能だけではしかたないでしょうね。
それでは回答にならないと思い、参考に下記のマクロを書いてみました。
印刷範囲を設定して、ツール→マクロ→マクロでLineChangeを実行すれば各頁を太枠で囲んだ印刷になると思います。今は印刷プレビューにしてあります。PrintPreviewをPrintOutにすれば印刷します。(Excel2000です)

やってることは単純で、
 (1)外枠の太線の種類を調べる(どのサイズか不明のため)
 (2)改頁位置を調べる(最終行が空白でない場合のために画面を動かしています)
 (3)各改頁位置の1行前の下線を調べた太線にする
 (4)印刷プレビュー
 (5)変更した太線を元の細線に戻す
です。印刷前後に処理時間を要します。(印刷枚数によりますが)
ちょっと長くなりました。ご参考に。

ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入し、そこに貼り付けます。
'(Public prtRg ~ End Sub の範囲をコピーして貼り付けます)

Public prtRg As Range '印刷範囲
Public colNum As Integer '印刷範囲列数
Public endRowNum As Long '印刷範囲の最終行
Public LineWeight As Long '太線の種類
Public cl As Integer '列カウンタ

Public Sub LineChange()
  On Error GoTo ErrorHandler '印刷範囲を設定していない場合

  Set prtRg = Range("Print_Area") '印刷範囲の列数、最終行を求める
    colNum = prtRg.Columns.Count: endRowNum = prtRg.Rows.Count
    prtRg.Cells(endRowNum, 1).Select '印刷範囲の最終行に移動

  '太線の種類を調べる
  Dim rg As Range 'セル
  For Each rg In prtRg
    If rg.Borders(xlEdgeLeft).LineStyle <> xlNone Then
      LineWeight = rg.Borders(xlEdgeLeft).Weight '太線の種類
      Exit For
    End If
  Next

  'Application.ScreenUpdating = False '画面更新を止める
  LineChange_Sub xlThin, LineWeight '頁の最後の線を太くする
  ActiveSheet.PrintPreview '今はプレビュー。PrintOutで印刷
  LineChange_Sub LineWeight, xlThin '頁の最後の線を細くする
  'Application.ScreenUpdating = True '画面更新

  Exit Sub
ErrorHandler:
  If Err = 1004 Then MsgBox "印刷範囲を設定して実行して下さい"
End Sub


'頁の最後の線の太さを変える
Public Sub LineChange_Sub(srcWeight, chgWeight)
  Dim cot As Integer '改行カウンタ
  Dim hPB As Integer '改行位置
  Dim pageEnd As Range '頁の最後の行

  hPB = ActiveSheet.HPageBreaks.Count
  For cot = 1 To hPB
    Set pageEnd = ActiveSheet.HPageBreaks(cot).Location.Offset(-1, 0)
    For cl = 1 To colNum
      '頁の最後
      With pageEnd.Offset(0, cl - 1).Borders(xlEdgeBottom)
        If .LineStyle <> xlNone Then
          If .Weight = srcWeight Then '線の太さを変える
            .Weight = chgWeight
          End If
        End If
      End With
    Next
  Next
End Sub

  • 回答No.2
レベル7

ベストアンサー率 33% (2/6)

印刷する時に、各ページの表がきちんと太線で囲まれていたいという事でしょうか。 ページ枚数がそんなに多くなければ“改ページ”を使うのも手なんでしょうが… 改ページすれば、行数が変わっても最終行(各ページのですね)は太線のままです。 この場合、太線にするのは手動ですので、ページが多いと大変な作業ですので不向きなんですけどね。
印刷する時に、各ページの表がきちんと太線で囲まれていたいという事でしょうか。
ページ枚数がそんなに多くなければ“改ページ”を使うのも手なんでしょうが…
改ページすれば、行数が変わっても最終行(各ページのですね)は太線のままです。

この場合、太線にするのは手動ですので、ページが多いと大変な作業ですので不向きなんですけどね。
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ