2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-10-13

何かと問題視されているExcel方眼紙ですが、
使いどころによっては重宝するかもしれません。

設計書とかではなく、別のゲーム的なものの作成(数独、迷路等)とかでは使えるのではないかと思います。

現場によってはExcel方眼紙をデフォルトのフォーマットとしているところがあるかもしれません。

今回、そんなExcel方眼紙を作成するマクロを作成しましたので、紹介します。

環境

OS:Windows11 Pro(64Bit)、Windows10 Pro(64Bit)
Excel:Microsoft365のExcel(バージョン2209、64Bit)

基本的には古すぎるExcelでない限りは別のバージョンであっても正常に動作するかと思います。

マクロ

Excel方眼紙作成マクロ
'Excel方眼紙作成マクロ
Sub MakeExcelGraphPaper()
    
    Dim line_thickness As Variant
    
inputvalue:
    line_thickness = InputBox("Excel方眼紙を作成します。" & vbCrLf & "幅を入力してください。" & vbCrLf & "幅の範囲:0 < 幅 ≦ 67.68", "幅入力", 3)
    
    'エラー処理
    If line_thickness = "" Then
        Exit Sub
    End If
    Dim button_value As Long
    If IsNumeric(line_thickness) = False Then
        button_value = MsgBox("数字以外が入力されています!!", vbRetryCancel + vbCritical, "入力エラー")
        If button_value = vbCancel Then
            Exit Sub
        Else
         GoTo inputvalue:
        End If
    Else
        If line_thickness < 0 Or line_thickness > 67.68 Then
            button_value = MsgBox("範囲外の数字が入力されています!!", vbRetryCancel + vbCritical, "入力エラー")
            If button_value = vbCancel Then
                Exit Sub
            Else
             GoTo inputvalue:
            End If
        End If
    End If
    
    '初期状態に戻す
    If line_thickness = 0 Then
        Columns("A:XFD").ColumnWidth = 8.38
        Rows("1:1048576").RowHeight = 18.75
        Exit Sub
    Else
        '方眼紙作成
        Columns("A:XFD").ColumnWidth = line_thickness
        Rows("1:1048576").RowHeight = Columns("I").Width
    End If
    
End Sub

このマクロは実行すると方眼紙の幅の入力画面が表示されるので、数字を入力します。
デフォルトでは3が入力された状態となっています。
数字は小数もOKです。
なお、調べたところ、幅の最大値は67.68付近でしたので、入力値は0≦幅≦67.68で制限をかけています。
元に戻せなくなってしまうと面倒ですので、
0を入力したときのみ、方眼紙ではなく、初期状態(Excelを起動した状態)に戻します。
image.png

数字以外の文字が入力された場合はエラーメッセージが表示されます。
再試行を押した場合は再度幅入力画面になります。
image.png

また、範囲外の数字を入力した際にも同様のエラーメッセージを表示します。
挙動は数字以外の文字の時と同じです。

image.png

すると、指定した幅のExcel方眼紙が作成されます。
image.png

方眼紙の作成のコードですが、
一旦列の幅のみ設定をして置き、
列の幅を参照し、同じ幅を行に設定することで方眼紙を実現しています。

今回、このマクロですが、個人用マクロブックに適用することにより、
マクロが無効になっていても実行できるようにしています。

個人用マクロブックについてはこちらの記事に詳しく書かれていますので、参照ください。

マクロに対してショートカットキーを割り当てることができるため、
ショートカットキーでマクロを呼び出せるようにしています。

ショートカットキー割り当てについてはこちらの記事を参考にさせていただきました。

ショートカットキー割り当ての部分のマクロになります。
私はほかにもショートカットキーを割り当てているものがある兼ね合いで、
Crtl + Alt + Shift + Xをショートカットキーに割り当てていますが、
自分の使いやすいショートカットキーに変更してください。

ショートカットキー割り当て
Sub ShortcutKey()
    '「Crtl + Alt + Shift + X」を「MakeExcelGraphPaper」に割り当てる
    '「Crtl + Alt + Shift + X」は"^%+X"と書く
    Application.OnKey "^%+X", "MakeExcelGraphPaper"
End Sub

なお、ショートカットキーをマクロに書く際の文字列の書き方ですが、
特殊文字については下記記事に詳しく書かれています。

なお、上記記事に書かれていない文字についてはそのまま記載すればOKです。
※英字の場合、大文字・小文字の区別はありません。
例:Ctrl+H → "^H"

元々割り当てられているショートカットキーが存在する場合は上書きされてしまうため、
上書きされたくない場合はショートカットキーの設定には注意してください。

参考にした記事にもあります通り、ショートカットキーは一度Excelを閉じると忘れてしまうため、
Excel起動の度にマクロを呼び出してあげる必要があります。
下記マクロをThisWorkbookに貼り付けることで起動時にショートカットキーの割り当てが行われます。

Excel起動時に割り当て
Private Sub Workbook_Open()
    ShortcutKey  
End Sub

まとめ

いかがだったでしょうか。
今回はExcel方眼紙を作成するマクロの実装を行いましたが、
個人用マクロブックのマクロにショートカットキーを割り当てることで
ほかにもさまざまな機能を実装することができます。
マクロにつき、自分でカスタマイズし放題ですので、
自分でマクロが書ける方は色々と実装してみてはいかがでしょうか。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?