VBAで使う演算子

Excel VBA

演算子とは

計算のための演算子を「算術演算子」、値と値の比較のための演算子を「比較演算子」、といいます。 演算子というと難しいものに感じますが、算数で使うものばかりです。 ですが記号が違っているものもあるため、一通り確認してみましょう。

算術演算子

「+」プラス

足し算をする演算子です。 以前の頁で文字列の連結にも使いましたが、文字列は「&」アンパサンドで連結する方が一般的です。

「-」マイナス、ハイフン

VBAプログラムの中では文字の区切りとしての用途はなく、もっぱらマイナスの数字か引き算をするために使われます。

「*」アスタリスク

掛け算のための演算子です。 VBAプログラム内では「×」は使用できません。

「/」スラッシュ

割り算のための演算子です。 この演算子を扱う時は、やや注意が必要です。 というのも、割り算では思わぬ小数点以下の数字が出来る可能性があるためです。 そういった小数を整数型の変数に代入すれば、小数点以下の数値はデータ上消滅します。

Sub WarizanMessage()
    Dim i As Integer
    i = 10 / 3
    MsgBox (i)
End Sub

スクリーンショットの画面  自動的に生成された説明

こういったことが起こるため、予め小数点以下のデータを保持できる変数型を使うか、次にご紹介する「\」や「Mod」を使い、小数点以下の数値が出ないようにしておく方が無難です。

「\」エンマーク

割り算の中で、整数部分だけが結果となる演算子です。 算数では「商」という表現になりますね。 余りは無視されるため、小数点以下切り捨ての計算をする時に使われます。

「Mod」モッド

割り算の余りの部分だけを出す演算子です。 「\」エンマークと対称的で、「商」は無視され「余り」だけを計算する演算子になります。 「&」アンパサンドで文字列を結合しながらの、例を記述してみます。

Sub WarizanMessage()
    Dim syo As Integer
    Dim amari As Integer
    Dim str As String
    syo = 10 \ 3
    amari = 10 Mod 3
    str = "商" & CStr(syo) & "余り" & CStr(amari)   ‘CStr関数で他の型を文字列に変換
    MsgBox (str)
End Sub

スクリーンショットの画面  自動的に生成された説明

「^」キャレット

べき乗を計算する演算子です。 プログラムではなく算数の式だと思って、下の例を見てください。

2 ^ 3 = 2 * 2 * 2 = 8

「2 ^ 3」は日本語に直すと、「2の3乗」となります。

比較演算子

後の頁でご説明していますが、プログラムには条件という概念があります。 「比較演算子」は、条件の中でのみ使われます。

比較演算子としての「=」等号、イコール

条件の中での「=」は、我々が算数で習った等号と同じ意味になります。

Dim i As Integer
i = 5
If i = 5 Then     'ここでの等号は代入ではなく比較に使っている
    MsgBox(i)
End If

こういった条件の中では、従来通りの等号として扱われます。

条件に関しては次の頁でご説明しています。

「>」「<」不等号

不等号の意味は算数と同じになります。 単純に「>」「<」だけで比較した場合は、同じ値でも条件に一致したことにはなりません。

A > B     ‘AはBよりも大きい

「以上」や「以下」という表現での比較をしたい時は、等号と組み合わせて使うことになります。

A >= B    ‘AはB以上

「等しくない」ことだけが必要な場合の比較演算子はこうなります。

A <> B    ‘AはBと等しくない

論理演算子

2つの条件を組み合わせて使うための演算子です。

「And」アンド

2つの条件を満たしている場合のみ、条件が満たされていることになる演算子です。

(条件1 And 条件2)    '条件1と条件2の両方が満たされていれば、()内の条件は正

「Or」オア

2つの条件のうち片方でも満たしていれば、条件が満たされていることになる演算子です。

(条件1 And 条件2)    '条件1と条件2の片方でも満たされていれば、()内の条件は正

今回のまとめ

今回は計算や比較のために使う演算子をご説明しました。 次回は比較演算子を使った、「条件分岐」をご説明したいと思います。 「条件分岐」によって、処理したい場合としなくていい場合を操作することができます。 

コメント

タイトルとURLをコピーしました