今日を乗り切るExcel研究所

Excel に働かされていませんか

Excel シートを方眼紙にしたい

Excel方眼紙を作成したい

Excel方眼紙というのは、全ての列の列幅を詰めてシートを方眼紙のように使うことです。

Excel をこういう使い方するのは、どうも日本独自の文化のようです。

レイアウトがやりやすくなるのはわかりますが、それは表計算ソフトの本来の仕事ではありません。

自由に罫線を引いたり、セルを結合を駆使した複雑なレイアウトにされると、セル範囲のコピー&ペーストさえもままならず、イライラの元です。

最近は世間的にその弊害も認識されて来て、利用頻度も減ってきているようです。

とは言え、個人的には仕事上避けられない状況にあります。

手作業で Excel 方眼紙を作成するには

まずは手作業でやってみます。

【手順例】

  1. Ctrl + A でシートを全選択します
  2. 行番号見出しの境界の一つをマウスで上下に動かし、高さを調整します。
  3. 列番号見出しの境界の一つをマウスで左右に動かし、幅を調整します。
  4. シート内をクリックして全選択を解除します

幅や高さを目検討で変更するだけならこれで簡単に出来るのですが、きっちりと正方形にするには、このとき表示されるピクセル数で幅と高さで合わせます。

マウスでなく、入力でピクセル数を指定できればいいのですが、「列の幅」では"0"の文字数、「行の高さ」ではポイント単位でしか入力できません。

ディスプレイが高解像化している昨今、ピクセル単位のマウス操作をするのは老眼にはちょっと厳しい感じです。

 



Excel 方眼紙を作成するマクロ

本マクロは、セルを正方形にした方眼紙を作成します。

対象範囲の左上隅のセル(A1など)の「高さ」をタテヨコの長さとします。

Excel 方眼紙は必ずしも正方形にこだわるものではありませんが、幅より高さの方が安定していて合わせやすいのでそちらを基準としました。

Option Explicit

Sub 方眼紙化()
    Application.ScreenUpdating = False
    
    If Selection.Cells.CountLarge > 1 Then
        squareCells Selection.Cells
    Else
        squareCells ActiveSheet.Cells
    End If

    Application.ScreenUpdating = True
End Sub

Private Sub squareCells(rng As Range)
    With rng.Cells(1)
        .ColumnWidth = .Height / .Width * .ColumnWidth
        .ColumnWidth = .Height / .Width * .ColumnWidth
        .ColumnWidth = .Height / .Width * .ColumnWidth
        rng.ColumnWidth = .ColumnWidth
        rng.RowHeight = .RowHeight
    End With
End Sub

【使い方】

  1. VBA 標準モジュールに上記 VBA ソースをコピー&ペーストします
  2. 方眼紙化したいシートを開き、基準となるセルの行の高さを調整します
    • シート全体を対象にする場合はA1セルの高さ
    • セル領域を選択している場合は、その範囲の左上隅のセルの高さ
  3. 「方眼紙化」マクロを実行します
  4. 列の幅と行の高さが全て同じに調整されます

【注意】 「元に戻す」(Undo)はできません

参考