這裡介紹 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)可用於比較兩個數值或字串變數,傳回布林值(TrueFalse),以下是常見的比較運算子。

運算子 說明
= 等於
<> 不等於
< 小於
> 大於
<= 小於或等於
>= 大於或等於

邏輯與位元運算子

邏輯與位元運算子適用於各種邏輯變數之間的運算,亦可用於位元(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 運算,完整的運算子優先順序資料請參考 Operator Precedence in Visual Basic

同樣的 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,其餘以此類推。

更多關於 VBA 的教學文章,請參考 VBA 程式設計

參考資料:Microsoft Developer Network