這裡介紹 Excel VBA 中各種運算子的使用方式,還有許多的範例程式碼。
每個程式語言都會有一系列的運算子,不同的運算子可用於不同資料的運算,以下是 Excel VBA 中常用的運算子。
算術運算子
下表是 VBA 中的算術運算子。
| 運算子 | 說明 | 優先順序 |
|---|---|---|
^ | 冪運算(次方) | 1 |
* | 乘法 | 2 |
/ | 除法 | 2 |
\ | 整數除法 | 3 |
Mod | 餘數 | 4 |
+ | 加法 | 5 |
- | 減法 | 5 |
以下是數學運算的範例:
Dim a, b As Integer, c As Double
a = 5
b = 10
c = a + b ' 加法
c = a - b ' 減法
c = a * b ' 乘法
c = b / a ' 除法
c = b Mod a ' 餘數
c = b ^ a ' 次方
字串運算
用於字串的運算子只有一個。
| 運算子 | 說明 |
|---|---|
& | 串接兩個字串 |
這是連接兩個字串的範例:
Dim text1 As String, text2 As String
text1 = "Hi"
text2 = "G. T. Wang"
MsgBox text1 & " " & text2
比較運算子
比較運算子(comparison operators)可用於比較兩個數值或字串變數,傳回布林值(True 或 False),以下是常見的比較運算子。
| 運算子 | 說明 |
|---|---|
= | 等於 |
<> | 不等於 |
< | 小於 |
> | 大於 |
<= | 小於或等於 |
>= | 大於或等於 |
邏輯與位元運算子
邏輯與位元運算子適用於各種邏輯變數之間的運算,亦可用於位元(bitwise)運算。
| 運算子 | 說明 |
|---|---|
And | AND 運算 |
Or | OR 運算 |
Not | NOT 運算 |
Xor | XOR 運算 |
這是 And 邏輯運算的一個範例:
Dim a, b, c As Integer
Dim x, y As Boolean
a = 10
b = 8
c = 6
x = a > b And b > c ' 結果為 True
y = b > a And b > c ' 結果為 False
MsgBox "x is " & x & ", y is " & y
若將各種不同的運算子混合在一起運算時,執行的先後順序就要注意,像邏輯與位元運算子低於比較運算子,所以這裡的判斷式在執行時,會先執行前後的比較大小運算,然後再執行 And 運算,完整的運算子優先順序資料請參考 Microsoft Learn。
同樣的 And 運算子也可以用於位元運算:
Dim a, b, c, x, y, z As Integer
a = 10
b = 8
c = 6
x = (a And b) ' 結果為 8
y = (a And c) ' 結果為 2
z = (b And c) ' 結果為 0
MsgBox "x = " & x & ", y = " & y & ", z = " & z
位元運算就是指每個位元獨立做運算,以這裡的 a And b 來說,a 的值以二進位表示的話是 1010,而 b 以二進位表示則為 1000,所以兩個值做完 And 運算之後,就會是二進位的 1000,也就是十進位的 8,其餘以此類推。
參考資料: