Excel方眼紙をきめ細かい設定で簡単に作り印刷するには:VBA/マクロ便利Tips(2/3 ページ)
業務効率化に役立つVBA/マクロのさまざまなTipsをコード例を交えて紹介していきます。初回は範囲、列幅、行高、けい線の色を指定してボタン1つでExcel方眼紙を作成できるマクロの作り方を紹介します。余白も指定して印刷にも対応します。
「けい線の色」コンボボックスから色を選択したときの処理
次は、「けい線の色」コンボボックスから色を選択したときの処理を記述する。
Changeイベント内にコードを記述する。図2の方法で、「けい線の色」コンボボックスを選択し、右の一覧ボックスからChangeを選択する。
作成されたコードにリスト2の内容を書いていこう。
Private Sub けい線色コンボボックス_Change() Select Case けい線色コンボボックス.Text Case "黒" けい線の色 = 1 Case "青" けい線の色 = 5 Case "緑" けい線の色 = 50 Case "赤" けい線の色 = 3 Case "薄青" けい線の色 = 8 Case Else Exit Sub End Select End Sub
リスト2では、「けい線」コンボボックスから「Text」プロパティで選択された値で条件分岐を行っている。
「黒」が選択された場合は、プライベートモジュールレベル変数「けい線の色」に「1」を格納し、「青」の場合は「5」、「緑」の場合は「50」、「赤」の場合は「3」、「薄青」の場合は「8」を格納しておく。
この色番号については、記事「セルの数値、フォント、文字位置、背景色、けい線など表示形式/書式設定の使い方」の「セルのフォント書式設定」を参照してほしい。
「実行」ボタンがクリックされたときの処理
次は、「実行」ボタンがクリックされたときの処理だ。ここまでやってきた方法でClickイベントのコードを生成する。
Private Sub 実行ボタン_Click() If 範囲テキストボックス.Text = "" Or けい線色コンボボックス.ListIndex = 0 Then MsgBox "未入力か所があります!" Exit Sub Else With Range(範囲テキストボックス.Text).Borders .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = けい線の色 End With Range(範囲テキストボックス.Text).ColumnWidth = 列幅テキストボックス.Text Range(範囲テキストボックス.Text).RowHeight = 行高テキストボックス.Text End If End Sub
「範囲」テキストボックスが未入力か、または、「けい線の色」コンボボックスで色が選択されていない場合は、警告メッセージを出して処理を抜ける。それ以外の場合は以下の処理を行う。
「範囲」テキストボックスに入力されたセルの範囲にけい線を引く。「範囲」テキストボックスには初期値で「A1:FU280」の値が指定されている。
初期値である「列幅」の「4.63」と「行高」の「31.5」では、「範囲」テキストボックスに入力されている初期値で、A4用紙縦でちょうどいっぱいの方眼紙ができる。
「けい線の種類」は「実線」で「太さ」は「極細」、「けい線の色」にはプライベートモジュールレベル変数「けい線の色」の値を指定する。
けい線の種類、太さなどについては、記事「セルの数値、フォント、文字位置、背景色、けい線など表示形式/書式設定の使い方」の「セルのけい線の設定」を参照してほしい。
「範囲」テキストボックスに入力されたセルの範囲の、「列幅(ColumnWidth)」に「列幅」テキストボックスに入力されている値を指定する。初期値で「4.63」が指定されている。また、「行高(RowHeight)」には「行高」テキストボックスに入力されている値を指定する。初期値で「31.5」が指定されている。
なお、「列幅」「行高」を取得する方法は後述の「方眼紙を印刷するときの注意」を参照してほしい。
列幅と行高を設定するColumnWidth/RowHeightプロパティ
ここで登場したColumnWidth/RowHeightプロパティについて解説しておこう。書式(ここでは書き方)は下記のようになる
ColumnWidth/RowHeightプロパティの書式
オブジェクト.ColumnWidth=列幅の値
オブジェクト.RowHeight=行高の値
オブジェクトには、リスト3のように対象となるRangeオブジェクトを指定する。
「リセット」ボタンがクリックされたときの処理
次は「リセット」ボタンがクリックされたときの処理だ。
Private Sub リセットボタン_Click() If 範囲テキストボックス.Text = "" Then MsgBox "範囲が指定されておりません!" Exit Sub Else Range(範囲テキストボックス.Text).ColumnWidth = 8.38 Range(範囲テキストボックス.Text).RowHeight = 13.5 Range(範囲テキストボックス.Text).ClearFormats 範囲テキストボックス.Text = "A1:FU280" 列幅テキストボックス.Text = 4.63 行高テキストボックス.Text = 31.5 左余白テキストボックス.Text = 1 右余白テキストボックス.Text = 1 上余白テキストボックス.Text = 1 下余白テキストボックス.Text = 1 End If End Sub
「範囲」テキストボックス内に値が入力されていない場合は、警告メッセージを表示して処理を抜ける。それ以外は以下の処理を行う。
「範囲」テキストボックスで指定されたセルの範囲の「列幅」を標準の「8.38」に戻し、「行高」を「13.5」に戻す。けい線や色などが設定されていた場合は、ClearFormatsメソッドで書式をクリアする。
「範囲」テキストボックス内にはデフォルトの「A1:FU280」の範囲を指定し、「行高テキストボックス」にはデフォルトの「4.63」を指定し、「行高テキストボックス」にはデフォルトの「31.5」を指定する。
「左余白」テキストボックスの値を「1」で、「右余白」テキストボックスの値を「1」で、「上余白」テキストボックスの値を「1」で、「下余白」テキストボックスの値を「1」で初期化する。全てを最初に表示されていた値に戻す。
Copyright © ITmedia, Inc. All Rights Reserved.