Excel VBAにはさまざまな演算子があり、これらを使用して数値や文字列の操作、論理的な評価、比較などを行います。
以下に、VBAで使用できる演算子をカテゴリ別に示します。
VBAで使用できる演算子
演算子の種類 | 内容 |
---|---|
算術演算子 | 足し算、引き算、掛け算、割り算などの演算を行うときに使用する |
比較演算子 | 値と値の大きさを比較する時に使用する |
論理演算子 | 「または」や「かつ」のように、複数の条件を指定する時に使用する |
文字列演算子 | 文字列と文字列を連結するときに使用する |
代入演算子 | 右辺の値を左辺に代入する時に使う |
算術演算子
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
+ | 加算(足し算) | 2 + 3 | 5 |
– | 減算(引き算/符号反転(*1)) | 5 – 2 | 3 |
* | 乗算(掛け算) | 2 * 3 | 6 |
/ | 除算(割り算) | 6 / 2 | 3 |
\ | 整数除算(割り算の整数値の答え)(*2) | 7 \ 2 | 3 |
Mod | 剰余(モジュロ)(割り算のあまり) | 7 Mod 2 | 1 |
^ | べき乗 | 2 ^ 3 | 8 |
*1、数値型の変数で「-x」のように数値の前に「-」を記述すると符号が反転されます。
*2、円マーク「¥」がバックスラッシュ「\」がになってしまうのは文字コードが同じの為問題ありません。和文フォント「¥」 欧文フォント「\」
ExcelのVBAで使用する例になります。
Sub OperatorExample()
' 算術演算子の例
Dim a As Integer
Dim b As Integer
Dim result As Integer
a = 10
b = 3
result = a + b ' result = 13
result = a - b ' result = 7
result = a * b ' result = 30
result = a / b ' result = 3.333...
result = a \ b ' result = 3
result = a Mod b ' result = 1
result = a ^ b ' result = 1000
End Sub
比較演算子
比較演算子は条件を満たせばTrue満たせなければFalseが返ってきます。
日本語で考えるとTrueは「はい」Falseは「いいえ」と覚えると分かりやすいです。
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
= | 等しい | 5 = 5 | True |
<> | 等しくない | 5 <> 3 | True |
> | より大きい | 5 > 3 | True |
< | より小さい | 3 < 5 | True |
>= | 以上 | 5 >= 5 | True |
<= | 以下 | 3 <= 5 | True |
Like | パターンマッチング | “Hello”Like”He” | True |
Is | オブジェクト比較 | Worksheets(“Sheet1”) Is Worksheets(2) | False |
Sub OperatorExample()
' 比較演算子の例
Dim a As Integer
Dim b As Integer
Dim isEqual As Boolean
a = 10
b = 3
isEqual = (a = b) ' False
isEqual = (a <> b) ' True
isEqual = (a > b) ' True
isEqual = (a < b) ' False
isEqual = (a >= b) ' True
isEqual = (a <= b) ' False
End Sub
論理演算子
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
And | 論理積(AND) 条件1を満たし、条件2を満たす。 | True And False | False |
Or | 論理和(OR) 条件1を満たすか、または条件2を満たす。 | True Or False | True |
Not | 否定(NOT) 条件でない。 | Not True | False |
Xor | 排他的論理和(XOR) 条件1を満たし、かつ条件2を満たさない または 条件2を満たし、かつ条件1を満たさない。 | True Xor True | False |
Eqv | 論理等価(EQV) 条件1を満たし、かつ条件2を満たす。 または条件1を満たさない、かつ条件2を満たさない | True Eqv True | True |
Imp | 論理含意(IMP) 条件1を満たさないまたは、条件2を満たす。 | False Imp True | True |
And(アンド) 演算子を使用した例
Sub AndOperatorExample()
Dim age As Integer
Dim hasLicense As Boolean
Dim canDrive As Boolean
age = 20
hasLicense = True ' Trueで免許有、Falseで免許無
' 年齢が18以上で運転免許を持っている場合のみ運転可能
canDrive = (age >= 18) And hasLicense
If canDrive Then
MsgBox "運転許可"
Else
MsgBox "運転不許可"
End If
End Sub
Or(オア) 演算子を使用した例
Sub OrOperatorExample()
Dim hasPassport As Boolean
Dim hasVisa As Boolean
Dim canTravel As Boolean
hasPassport = True 'Trueが有り、Falseが無し
hasVisa = False
' パスポートかビザのいずれかを持っていれば旅行可能
canTravel = hasPassport Or hasVisa
If canTravel Then
MsgBox "旅行が行ける"
Else
MsgBox "旅行は行けない"
End If
End Sub
Not(ノット) 演算子を使用した例
Sub NotOperatorExample()
Dim isRaining As Boolean
Dim goForAWalk As Boolean
isRaining = False ' Trueがはい、Falseがいいえ
' 雨が降っていなければ散歩に行く
goForAWalk = Not isRaining
If goForAWalk Then
MsgBox "散歩に行ける"
Else
MsgBox "散歩は行けない"
End If
End Sub
Xor(エックスオア) 演算子を使用した例
Sub XorOperatorExample()
Dim hasTicket As Boolean
Dim isGuest As Boolean
Dim canEnter As Boolean
hasTicket = True
isGuest = False
' チケットを持っているか、ゲストである場合、どちらか一方のみ入場可能
' False、False又はTrue、Trueの場合は入場できない
canEnter = hasTicket Xor isGuest
If canEnter Then
MsgBox "入場できます"
Else
MsgBox "入場できません"
End If
End Sub
Eqv(イーキューブイ) 演算子を使用した例
Sub EqvOperatorExample()
Dim conditionA As Boolean
Dim conditionB As Boolean
Dim result As Boolean
conditionA = True
conditionB = True
' 両方の条件が同じ真偽値の場合に真を返す
result = conditionA Eqv conditionB
If result Then
MsgBox "両方の条件は同じです。"
Else
MsgBox "その条件は誤りです。"
End If
End Sub
Imp(アイエムピー) 演算子を使用した例
Sub ImpOperatorExample()
Dim conditionA As Boolean
Dim conditionB As Boolean
Dim result As Boolean
conditionA = False
conditionB = True
' Aが偽であるか、または両方の条件が真の場合に真を返す
result = conditionA Imp conditionB
If result Then
MsgBox "その条件は合ってます。"
Else
MsgBox "その条件は誤りです。"
End If
End Sub
文字列演算子
文字列比較演算子は文字列と文字列を連結して一連の文字列にするために使用します。
「+」は加算を意味する算術演算子としても使用されるため、わかりづらくなります。実際に使用する場合は「&」を使用しましょう。
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
& | 文字列の結合 | “Hello” & ” World” | “Hello World” |
+ | 文字列の結合(推奨されない) | “Hello” + ” World” | “Hello World” |
文字列結合を使用したメッセージの作成
Sub DynamicMessage()
Dim userName As String
Dim message As String
' ユーザーからの入力を取得
userName = InputBox("あなたの名前を入力してください:")
' 動的なメッセージの作成
message = "こんにちは, " & userName & "さん! ようこそ"
MsgBox message
End Sub
InputBoxはユーザーが文字を入力することができるダイアログボックスです。
代入演算子
代入演算子の「=」は、プロパティの値を設定したり、変数に値を代入したりすときに使用します。
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
= | 値を変数に代入する | x = 5 | xに5が代入される |
代入演算子 =
最も基本的な代入演算子は = です。この演算子を使用して、右辺の値を左辺の変数に代入します。
Sub BasicAssignment()
Dim x As Integer
x = 10 ' xに10を代入
MsgBox "xの値は: " & x
End Sub
複合代入演算子
複合代入演算子は、変数に対して演算を行った後、その結果を再び同じ変数に代入するために使用されます。残念ながらVBAで使用できる複合代入演算子ありません。
代入演算子は、変数に値を設定するための基本的なツールです。=
を使用して基本的な代入を行い変数に対して演算を行った結果を再び同じ変数に代入することができます。これにより、コードをより簡潔に記述でき、計算結果の更新が容易になります。