基本となるデータの入力とセルの書式を練習しましょう。段階に分けてVBAコードを記述していきます。詳細な説明は省きますが、自身でコードを解明しながら作成してください。
では、まずExcel上で次のような表があることを前提に進めていきます。
① A1のセルに表のタイトルを付けるVBAコードを作成しましょう。
Sub Lesson1()
Dim Name As String
Name = InputBox("タイトル名を入力してください")
Range("A1").Value = Name
End Sub
入力ボックスのデータを格納する変数を作成し、それをA1のセルの値に代入します。
実行した場合は上記のようになります。ここでは、「1週間の収支表」というタイトルのデータを入力。
② 収入と支出の合計を計算しましょう。
Sub Lesson2()
Range("H3").Value = "合計"
Range("H4").Formula = "=SUM(B4:G4)"
Range("H5").Formula = "=SUM(B5:G5)"
End Sub
H列の3行目に「合計」と入力し、3、5行目にその行の合計を求めるSum関数の数式を設定します。Formulaプロパティは、Rangeオブジェクトのプロパティで、セルに入力された数式を表します。要するに、セル内に数式を代入するのであれば、Formulaプロパティを使うことになります。
実行した結果は上記になります。収支の合計が表示されていることを確認してください。
③ 月曜の収入と支出をメッセージボックスで表示させる設定を作ってみましょう。
Sub Lesson3()
Dim Var As Variant
Var = Range("A3:G5").Value
MsgBox Var(2, 2)
MsgBox Var(3, 2)
End Sub
バリアント型の変数にセル範囲のデータを格納して、バリアント型変数にインデックス番号を指定することでデータを引き出すようにしています。結果としては、月曜の収入と収支の値をメッセージボックスで表示させるものです。
④ セルA3からH5までのデータをA8からH10の範囲にコピーするVBAコードを作ってみます。今回Copyメソッドは使用しません。ただし、実行する前に表内のいずれかのセルを選択しておきます。
Sub Lesson4()
Dim Var As Variant
Var = ActiveCell.CurrentRegion.Value
Range("A8:H10") = Var
End Sub
アクティブセルを含むセル領域の全データを変数varに格納し、その格納されたデータをセルA8からH10に入力します。
実行すると上記のような結果になります。同じデータがコピーされていることが分かります。
⑤ では、表に書式を設定していきましょう。これもあらかじめアクティブセルを表の中に入れておいてから実行します。
Sub Lesson5()
With ActiveCell.CurrentRegion
.Font.Size = 12
.Font.Color = RGB(200, 100, 100)
.Interior.ColorIndex = 20
.NumberFormat = "\\#,##0"
End With
End Sub
アクティブセルの領域のフォントサイズと文字色、塗りつぶし、表示形式をWithステートメントで記述しています。文字色はRGB関数を使い、塗りつぶし色はカラーインデックスで指定しています。また、表示形式は頭に「¥」をつけ、データが3桁ごとにカンマで区切られる設定を行っています。
実行すると上記のように、書式が設定されます。
⑥ 罫線を表に設定していきます。アクティブセル領域に罫線を引く形で記述していきましょう。
Sub Lesson6()
With ActiveCell.CurrentRegion
.Borders(xlEdgeTop).Weight = xlThick
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).Weight = xlThick
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeLeft).Weight = xlThick
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeRight).Weight = xlThick
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).Weight = xlThin
.Borders(xlInsideHorizontal).LineStyle = xlDash
.Borders(xlInsideVertical).Weight = xlThin
.Borders(xlInsideVertical).LineStyle = xlDash
End With
End Sub
アクティブセル領域に対して処理をWith構文を使って設定しています。
まず、アクティブセル領域の上端を太線で実線の罫線を設定しています。同じ設定を下端、左端、右端の順に指定しています。その後は、アクティブセル領域の内部水平線を細い、点線で設定し、同じ設定を内部垂直線にも行います。
実行すると、表にさまざまな罫線が引かれます。罫線は、選択された範囲の内部と外部にそれぞれ設定を行っていきます。
基本的なVBAコードの記述方法とプロパティ、メソッドなどが理解できたでしょうか。まだ、グラフや図形などの扱いもVBAで記述することができます。今回は、初歩的な記述だけにとどめますが、様々な応用力を付けるには自身でいろいろと作成いくことです。まずは、基本構文を覚えた上でステップアップしてください。