VBAの基本処理

Excel VBA

この記事では、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に対して

book.Close

と書きます。

計算

+:加算
-:減算
*:乗算
/:除算
¥:剰余

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はそれほど難しいプログラミング言語ではありません。恐れずに書いていきましょう。