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

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

[薬師寺国安,PROJECT KySS]

「けい線の色」コンボボックスから色を選択したときの処理

 次は、「けい線の色」コンボボックスから色を選択したときの処理を記述する。

 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 「けい線の色」を選択したときのコード

 リスト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
リスト3 「実行」ボタンがクリックされたときのコード

 「範囲」テキストボックスが未入力か、または、「けい線の色」コンボボックスで色が選択されていない場合は、警告メッセージを出して処理を抜ける。それ以外の場合は以下の処理を行う。

 「範囲」テキストボックスに入力されたセルの範囲にけい線を引く。「範囲」テキストボックスには初期値で「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
リスト4 「リセット」ボタンがクリックされたときのコード

 「範囲」テキストボックス内に値が入力されていない場合は、警告メッセージを表示して処理を抜ける。それ以外は以下の処理を行う。

 「範囲」テキストボックスで指定されたセルの範囲の「列幅」を標準の「8.38」に戻し、「行高」を「13.5」に戻す。けい線や色などが設定されていた場合は、ClearFormatsメソッドで書式をクリアする。

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

 「左余白」テキストボックスの値を「1」で、「右余白」テキストボックスの値を「1」で、「上余白」テキストボックスの値を「1」で、「下余白」テキストボックスの値を「1」で初期化する。全てを最初に表示されていた値に戻す。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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