Excel方眼紙をきめ細かい設定で簡単に作り印刷するには:VBA/マクロ便利Tips(1/3 ページ)
業務効率化に役立つVBA/マクロのさまざまなTipsをコード例を交えて紹介していきます。初回は範囲、列幅、行高、けい線の色を指定してボタン1つでExcel方眼紙を作成できるマクロの作り方を紹介します。余白も指定して印刷にも対応します。
本Tips連載について
今回からVBA/マクロの便利なTipsを解説していく。できるだけ、日常の業務に即役立ちそうな実践的なTipsの紹介をしたいと思う。その前に筆者の環境を書いておこう。Windows 8.1 Enterprize(64ビット)+Excel 2013(以下、Excel)の環境だ。
なお本Tips連載はある程度VBA/マクロが使える方を対象にしている。Excelマクロ/VBAの初心者の方は、「Excelマクロ/VBAリファレンス用途別・キーワード別一覧超まとめ」を参照しながら本稿を読んでいただきたい。
Excel方眼紙作成マクロの仕様
初回は、きめ細かい設定でExcel方眼紙を簡単に作るためのTipsを紹介する。どのような方眼紙を作るかを設定できる入力フォームを作成し、そこで「範囲」「列幅」「行高」を指定するようにする。指定した範囲に「けい線」を引き、「けい線の色」も任意の色を選択できるようにして、Excel方眼紙を作る。
フォームに配置している「列幅」の初期値は「4.63」にしている。また、「行高」の初期値は「31.5」にしている。「列幅」や「行高」を取得する方法は図3を参照してほしい。
また今回作成するフォームには「印刷関連」のメニューも用意し、「余白」を設定できるようにしている。「余白」を設定した後は「印刷プレビュー」ボタンで確認ができる。
なお、直接印刷できるボタンは用意していないが、Excelの[印刷プレビュー]の画面から印刷できるので問題はないだろう。
Excel方眼紙作成用フォームのデザイン
まずVBEを起動し、メニューの[挿入]から「ユーザーフォーム」を作成し、表示されるフォーム画面の、右隅下にマウスカーソルを持っていき、適当なサイズに広げる。プロジェクト内に「UserForm1」が追加されている。
「UserForm1」のプロパティから[Caption]に「Excel方眼紙作成フォーム」と指定する。
フォームに配置するコントロールとオブジェクト名は表のようになる。
コントロール名 | オブジェクト名 |
---|---|
ラベル(範囲指定) | デフォルト値 |
ラベル(列幅) | デフォルト値 |
ラベル(けい線の色) | デフォルト値 |
ラベル(上余白) | デフォルト値 |
ラベル(下余白) | デフォルト値 |
ラベル(右余白) | デフォルト値 |
ラベル(左余白) | デフォルト値 |
テキストボックス | 範囲テキストボックス |
テキストボックス | 列幅テキストボックス |
コンボボックス | けい線色コンボボックス |
ボタン | 実行ボタン |
ボタン | リセットボタン |
フレーム | デフォルト値 |
テキストボックス | 上余白テキストボックス |
テキストボックス | 下余白テキストボックス |
テキストボックス | 右余白テキストボックス |
テキストボックス | 左余白テキストボックス |
ボタン | 印刷プレビューボタン |
ラベル(【例】) | デフォルト値 |
表のコントロールをフォーム上に配置すると図1のようになる。もちろん配置については、各自使いやすいようにカスタマイズしても問題ない。
「範囲指定」テキストボックスにはデフォルトで「A1:FU280」のセルの範囲を指定している。「列幅」テキストボックスにはデフォルトで「4.63」、「行高」テキストボックスにはデフォルトで「31.5」を指定している。
なお、「列幅」「行高」にデフォルトで指定している値でも、実際に印刷すると極小の正方形の方眼紙で印刷される。もう少し大きい方眼紙にしたいなら、後述の「方眼紙を印刷するときの注意」の方法で「列幅」や「行高」の値を指定し、「範囲の指定」から「A4」サイズの用紙に収まるよう「セルの範囲」を調整する必要がある。これは試行錯誤で、その都度表示させながら設定しなければならない。
また、「上余白」「下余白」「右余白」「左余白」テキストボックスのプロパティから[IMEMode]に「fmIMEModeOff」を指定して、「英数入力」に設定している。
UserFormがActivateになったときの処理
まず、UserFormがActivateになったときの処理を記述する。UserFormがActivateになったときのイベントは、図2の方法でマクロ化できる。
下記のコードが自動的に生成される。ので、
Private Sub UserForm_Activate() End Sub
このイベント内にリスト1のコードを書いていく。
Option Explicit Dim けい線の色 As Integer Private Sub UserForm_Activate() けい線色コンボボックス.Clear With けい線色コンボボックス .AddItem "けい線の色選択" .AddItem "黒" .AddItem "青" .AddItem "緑" .AddItem "赤" .AddItem "薄青" End With けい線色コンボボックス.ListIndex = 0 End Sub
まず、Integer型の「けい線の色」というプライベートモジュールレベル変数を宣言しておく。
UserFormがアクティブになったときは、一度Clearメソッドで「けい線の色」コンボボックス内をクリアしておく。この処理をしていないと、UserFormがアクティブになるたびに、「けい線の色」が重複して追加されてしまう。
「けい線の色」コンボボックスにAddItemメソッドで「タイトル」と「けい線の色」を追加していく。
最初の状態では、「けい線の色」コンボボックスのインデックスが0の値、つまり「けい線の色選択」というタイトルが表示されるようにしておく。今回は5つの色しか追加していないが、各自が色を追加しても問題はない。その場合はリスト2のコードに色番号を指定するコードを追加する必要がある。
Copyright © ITmedia, Inc. All Rights Reserved.