VBAが嫌いな人が書いたVBA入門記事その3です。初心者の人も最低限だけ身に付けてPythonに移行しましょう。→VBAユーザーのためのPython入門 ~xlwingsでExcelからPythonを呼び出す~
記事一覧
- Excel VBA入門 ~その1 Excel VBAとは~
- Excel VBA入門 ~その2 最初のプログラム~
- Excel VBA入門 ~その3 基礎1~
- Excel VBA入門 ~その4 基礎2~
- Excel VBA入門 ~その5 Tips~
- Excel VBA入門 ~その6 アンチパターン~
プロシージャー
Sub プロシージャー名
~End Sub
の単位で呼び出すことができる。
Sub test()
Dim msg As String
msg = "hello"
Debug.Print msg
End Sub
変数
変数は値やオブジェクト(後述)を入れておくための箱。上記のDim msg As String
で変数msg
を宣言し、msg = "hello"
でmsg
に値を代入。
データ型
変数入る値の種類(数値、文字、日付、ワークシート等)を型という。型には値型と参照型の2種類がある。
Dim i as Long
i = 1000 '値型の例
Dim rg as Range
Set rg = Range("A2") '参照型の例
値型
変数名 = 値
で代入する。代表的な型は以下のとおり:
型 | 名前 | 説明 |
---|---|---|
String | 文字列型 | 任意の長さの文字 |
Long | 長整数型 | 「Integerが無いようだが?」「あんなの飾りです。偉い人にはそれが分からんのですよ。」 |
Double | 浮動小数点型 | 実数のこと 「Singleが無い(ry?」「あんなの(ry」 |
Boolean | ブール型 | 真偽値(TrueまたはFalse) |
Date | 日付型 | 日付時刻を表す |
参照型
Set 変数名 = 値
で代入する(使い分ける必要があるのか…)。オブジェクトを代入する際に使用する。オブジェクトの種類には、ワークシートを表すWorksheet
型、セル範囲を表すRange
型、テーブルを表すListObject
型等、値型と違って無数にある。値型以外のものはすべてオブジェクトと覚えておいてよい。
四則演算
演算子 | 処理 | 備考 |
---|---|---|
+ | 加算 | |
- | 減算 | |
* | 乗算 | |
/ | 除算 | |
\ | 除算の商 | |
Mod | 除算の余り | |
^ | べき乗 |
制御構文
If文と比較演算子
If文
If 条件式 Then
~ End If
で、条件にあった場合、Then
~ End If
部分が実行される。複数のElse If
で二つ目の条件を、Else
でいずれの条件にも合致しない場合の処理を実行できる。
If x = "犬" Then
処理1
Else IF x = "猫" Then
処理2
Else
処理3
End If
比較演算子
下記の比較演算子の結果を論理演算子(And
, Or
, Not
等)および括弧((
, )
)でつなげて、条件式を作る。
演算子 | 説明 |
---|---|
= | 左辺と右辺は等しい |
<> | 左辺と右辺は等しくない |
< | 左辺は右辺より小さい |
<= | 左辺は右辺以下 |
> | 左辺は右辺より大きい |
>= | 左辺は右辺以上 |
Like | 左辺は右辺で指定したパターンを持つ →Link |
Is | 左辺と右辺が同じオブジェクトを参照している →Link |
Select Case文
Select Case
文を使えば、同じ変数に対する複数の条件をより簡潔に記述できる。→Link
基本
Select Case x
Case "犬"
処理1
Case "猫"
処理2
Case Else
処理3
End Select
複数の値
Select Case x
Case "犬", "狼"
処理1
Case "猫", "ライオン"
処理2
Case Else
処理3
End Select
To で範囲指定
Select Case age
Case 0 To 10
処理1
Case 11 to 20
処理2
Case Else
処理3
End Select
Is 比較演算子
Select Case age
Case Is >= 0, Is <= 10
処理1
Case Is >= 11, Is <= 20
処理2
Case Else
処理3
End Select
For Each文
コレクションに含まれる各オブジェクトに対して、繰り返し処理を行う。ループを途中で抜ける場合にはExit For
を使う。
For Each 要素 In コレクション
繰り返し処理
If 終了条件 Then
Exit For
End If
Next
配列に対して繰り返し処理を行うには、For
文を使う:
For i = 1 to Ubound(配列)
繰り返し処理
Next