この記事では、VBAの基本処理について解説していきます。
この記事を読めば、VBAの基本は理解できます。
セルの指定
セルを指定するには、
Range
による方法と
Cells
による方法の2通りがあります。
Range
Rangeは、「A1」などのような
「アルファベットの列名+行番号」
でセルを指定する方式です。
A1セルに文字列を書き込むときには次のように書きます。
Range("A1").Value = "あいうえお"
逆にA1セルから値を取得し変数に代入するには
a = Range("A1").Value
と書きます。
長方形のセル範囲を指定することもできます。
Range("A1:D4").ClearContents
ここで
ClearContents
は
セルの値を削除する
という命令です。
上記のコードを実行すると、A1とD4に挟まれた長方形のセル範囲の値が削除されます。
Cells
Cellsは、
「行番号+列番号」
でセルを指定する方式です。
B1セルに文字列を書き込むには次のように書きます。
Cells(1, 2).Value = "かきくけこ"
ここで、Rangeと違い、「列、行」ではなく「行、列」なので、注意してください。
B1セルから値を取得し変数に代入するには
b = Cells(1, 2).Value
と書きます。
シートの指定
ワークシートは
Worksheets
で指定します。
次のコードは、1番目のワークシートのA1セルに文字列を書き込みます。
Worksheets(1).Cells(1, 1).Value = "あいうえお"
ワークシートはシート名で指定することもできます。
Worksheets("Sheet1").Cells(1, 1).Value = "さしすせそ"
ブックを開く
ブックは
Workbooks.Open
で開きます。
Workbooks.Open ("Book2.xlsx")
ブックを閉じる
では、ブックを閉じるのはどうすればいいのでしょうか。
まず、ブックを閉じるにはブックを変数に代入しなければなりません。
Dim book As Workbook Set book = Workbooks.Open("Book2.xlsx")
ここで新しい命令が出てきました。
まず
Dim
とは、特殊な型の変数を使うときにその変数を宣言するための命令です。
ここではWorkbook型の変数bookを使うことを宣言しています。
上記の「a」や「b」は宣言なしで使えましたが、Workbook型の変数は宣言しないといけません。
これは、実行してみてエラーが出たらDim文を付け加える、で全く構いません。
そして
Set
とは、変数に値を代入する命令です。
Dim文を使わないといけない変数にはSetを使います。
上記の「a」や「b」はSetを使わなくても代入できました。
話が脱線しましたが、ブックを閉じるには上記のbookに対して
と書きます。
計算
+:加算
-:減算
*:乗算
/:除算
¥:剰余
a = 3 b = 2 Cells(1, 1).Value = a + b '5 Cells(2, 1).Value = a - b '1 Cells(3, 1).Value = a * b '6 Cells(4, 1).Value = a / b '1.5 Cells(5, 1).Value = a \ b '1
ここで
‘
は、コメントのマークです。行のどこからでも、’を付けると以降がコメントになります。
文字列
文字列は”で囲みます。
If
Ifは条件を指定し、その条件に当てはまる場合実行されます。
a = 1 b = 2 If a < b Then Cells(6, 1).Value = "aはbより小さいです" End If
IfブロックはEnd Ifで終わらせます。
条件の指定方法には
=:左と右が等しい
<>:左と右が等しくない
<:左が右より小さい
<= :左が右以下 >:左が右より大きい
<=:左が右以上
があります。
ElseIf
は、最初の条件に当てはまらない場合の次の条件を指定します。ElesIfはつなげられます。
Else
は、どの条件にも当てはまらない場合実行されます。
a = 2 b = 1 If a < b Then Cells(6, 1).Value = "aはbより小さいです" ElseIf a > b Then Cells(6, 1).Value = "aはbより大きいです" Else Cells(6, 1).Value = "aとbは等しいです" End If
このコードでは、「aはbより大きいです」がA6セルに出力されます。
For
For
は、繰り返しです。例えば1から100まで繰り返すなら
For r = 1 To 100 Cells(r, 1).Value = r Next
と書きます。
このコードでは、単純に行番号を出力しています。
Step
で、刻みを変えられます。
For r = 1 To 100 Step 3 Cells(r, 1).Value = r Next
3行おきに出力されます。
With
With
は、「そのブロックの間この記述を省略する」という意味で、例えば次のように使います。
With Worksheets(1) .Cells(1, 1).Value = "たちつてと" End With
Withブロック中の.の前には、Withの後で宣言した文が挿入されて実行されます。
このコードだとあまりありがたみはないですが、同じものに対しての処理を続けて書くとき、コードが見やすくなり、バグも減ります。
MsgBox
MsgBox
は、メッセージボックスを出します。
MsgBox ("なにぬねの")
まとめ
この記事では、VBAの基本処理について解説しました。
セルを指定できて、計算ができて、IfやForが使えれば、基本的なVBAのコードは書けます。
VBAへの第一歩を踏み出してください。
VBAには詳細なヘルプが付いています。ネットもあります。分からなくなったらヘルプやネットで調べると良いでしょう。
VBAはそれほど難しいプログラミング言語ではありません。恐れずに書いていきましょう。