連載
» 2014年05月15日 18時00分 UPDATE

VBA/マクロ便利Tips:Excel方眼紙をきめ細かい設定で簡単に作り印刷するには (1/3)

業務効率化に役立つVBA/マクロのさまざまなTipsをコード例を交えて紹介していきます。初回は範囲、列幅、行高、けい線の色を指定してボタン1つでExcel方眼紙を作成できるマクロの作り方を紹介します。余白も指定して印刷にも対応します。

[薬師寺国安,PROJECT KySS]

本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のようになる。もちろん配置については、各自使いやすいようにカスタマイズしても問題ない。

vbatips1_01.jpg 図1 各コントロールを配置した

 「範囲指定」テキストボックスにはデフォルトで「A1:FU280」のセルの範囲を指定している。「列幅」テキストボックスにはデフォルトで「4.63」、「行高」テキストボックスにはデフォルトで「31.5」を指定している。

 なお、「列幅」「行高」にデフォルトで指定している値でも、実際に印刷すると極小の正方形の方眼紙で印刷される。もう少し大きい方眼紙にしたいなら、後述の「方眼紙を印刷するときの注意」の方法で「列幅」や「行高」の値を指定し、「範囲の指定」から「A4」サイズの用紙に収まるよう「セルの範囲」を調整する必要がある。これは試行錯誤で、その都度表示させながら設定しなければならない。

 また、「上余白」「下余白」「右余白」「左余白」テキストボックスのプロパティから[IMEMode]に「fmIMEModeOff」を指定して、「英数入力」に設定している。

UserFormがActivateになったときの処理

 まず、UserFormがActivateになったときの処理を記述する。UserFormがActivateになったときのイベントは、図2の方法でマクロ化できる。

vbatips1_02.jpg 図2 UserFormを選択し、右の一覧リストからActivateを選択

 下記のコードが自動的に生成される。ので、

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
リスト1 フォームがアクティブになったとき、「けい線の色」コンボボックスに色名を追加していくコード

 まず、Integer型の「けい線の色」というプライベートモジュールレベル変数を宣言しておく。

 UserFormがアクティブになったときは、一度Clearメソッドで「けい線の色」コンボボックス内をクリアしておく。この処理をしていないと、UserFormがアクティブになるたびに、「けい線の色」が重複して追加されてしまう。

 「けい線の色」コンボボックスにAddItemメソッドで「タイトル」と「けい線の色」を追加していく。

 最初の状態では、「けい線の色」コンボボックスのインデックスが0の値、つまり「けい線の色選択」というタイトルが表示されるようにしておく。今回は5つの色しか追加していないが、各自が色を追加しても問題はない。その場合はリスト2のコードに色番号を指定するコードを追加する必要がある。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。