【HOME】 【INDEX】 【第1回】 【第2回】 【第3回】 【第4回】
●型宣言文字プログラミングの基礎編 第3回
演算子
今回は、VBAで使用する演算子について、お話しよう!!おっと、その前に、前回の変数で話しておかなくちゃならないことがあった。●演算子って何?
それは、型宣言文字と呼ばれるもので、変数の後に、型宣言文字を
つければ、宣言したことと同じになるという便利な代物じゃ。
前回の変数の種類で一覧表にした、その一番右の列のことなんじゃが。。。
実は、この型宣言文字は、変数の種類のすべてにあるわけじゃない。
次に例をあげておくので参考にされたい。
Integer(整数型) % (パーセント)
Long(長整数型) & (アンパサンド)
Single(単精度浮動小数点型) ! (エクスクラメーションマーク)
Double(倍精度浮動小数点型) # (シャープ)
Currency(通貨型) @ (アットマーク)
String(文字型) $ (ドル)
使い方は簡単じゃ
例えば変数xというのがあれば、整数型ならそのうしろに%をくっつければそれでOKじゃ!!
つまりxが整数型にしたいときは x% とすればよい。
例
x% = 10,000
プロシージャの()内の引数でも次のように使用できる。
例 プロシージャTestの引数、変数xは整数であると宣言する場合
Sub Test(x%)
・
x = x + 1
・
End Sub
さて、いよいよ、今回の本題に入りましょう。
電卓を使って計算するとき、掛けたり、割ったり、引いたり、足したりするよね。
そのときには、自然に ×、÷、+、−のボタンを押して計算するよね!!
こういった計算することを演算というのだけど、それらに使われたそれらの記号は
演算するための記号ということで、演算子と呼ばれている。
VBAでも、たくさんの演算子が用意されていて、それらを使って計算させたり、
比較させてりして、プログラム作成で利用することができるわけです。
●演算子の種類
VBAでは、6種類の演算子があります
〇蚕儕藥算
^ (キャレット) は、べき乗です。 10の2乗 は 10 ^ 2 とします
* (アスタリスク)は、乗算、つまり掛け算です 10×2 は 10 * 2 とします
/ (スラッシュ)は、除算、つまり割り算です 10÷2 は 10 / 2 とします
\ (円マーク)は、商です。 9÷2の 商は 9 \ 2 とします
Mod(モッド)は、余りです 9÷2の余りは 9 Mod 2 とします
+(プラス)は加算です。つまり足し算です 9+2 は 9 + 2 とします
-(マイナス)は減算です。つまり引き算です 9-2 は 9 - 2 とします
★使用例
実際には変数などを使ってこれらの式を使います
Sub Test ()
Dim x As Integer , y as Integer
x = 10 : y = 2
x = x ^ y
MsgBox x
End Sub
この使用例では、それぞれ x、yの変数に整数型を宣言しています
xは10、yは2をそれぞれ代入しました
x ^ y
x、yをいろいろ変えることにより、x の y乗 といった式が完成します
x = x ^ yにより、変数xにこの値を代入します。
MsgBox で ダイアログボックスにxの値を表示させます
MsgBox x ・・・この式だけでOK!!
ダイアログボックスには 100 と表示されます
標準モジュールに、このようなプロシージャを作成して
自分でいろんな式を作成してみてください。
∧源列連結演算子
& (アンパサンド)、+ (プラス) 2つの文字列をつなぎ合わせて1つの文字列にします。
+を使用するときは、数字の文字列のときに、片方が数字である場合、その文字列は
数字として扱われますので、注意が必要です。
使い方は、個人的なものでしょうが、小生は & をよく使います。
文字列連結には & と + を使用します例 x= ”携帯” & ”電話” ・・・x= ”携帯電話”
+の使用方法は前後のデータで算術にもなるので注意が必要です
例 x= ”携帯” + ”電話” ・・・x= ”携帯電話”
x= ”1” + ”23” ・・・ x=”123”
x= ”12” + 3 ・・・ x= 15 (数値が入力されていれば算術扱いされる)
Rangeオブジェクトなどを使った時には
Range("A" & i ) という使い方をするときがあります。
変数 i を使って、利用します。
標準モジュールを使用します。
例
Sub Test_2()
Dim i as Integer
For i = 1 to 100
Range("A" & i ) = i
Next i
End Sub
For・・・は繰り返し文です。また後ほど詳しく説明しますが
i の変数に 1から100を繰り返し代入しなさいという意味です。
このプロシージャを実行しますと、
セルA1からセルA100に 1から100の数字が代入されます。
H羈啀藥算
2つの数値や定数、変数などを比較して、結果は TRUE または FALSE で返します
= (イコール) 等しい
<> 等しくない
< より小さい
> より大きい
<= 以下
>= 以上
例X、Y、Zはそれぞれ、バリアントで宣言しました。
Sub Test3()
Dim X, Y, Z
X = 100: Y = 100
Z = X = Y
MsgBox Z
End Sub
ZはTrueで返されます
Dim X%, Y%, Z%
と、すべて、整数型に宣言するとどうでしょう!!
値は -1 となります。 Trueは -1 ということがわかりますね!!
(ちょっと余談でした!!)
でも、小生が使用する場合、こういった使い方よりも、
If文などと合わせた方法で利用しています
例ダイアログボックスに100と表示されます。
Sub Test4()
Dim X%, Y%, Z%
X = 100: Y = 100
If X = Y Then
Z = X
End If
MsgBox Z
End Sub
Like演算子
文字列が文字のパターンに一致しているかどうかを調べる?、*、#などの文字記号が使えます
文字記号
用途
例
結果
?
任意の1文字
x=”ABC” Like "A?C"
True
*
任意の数の文字
x=”ABCDEF” Like "A*F"
True
#
任意の数値1文字
x=”A1C” Like "A#C"
True
Is演算子 ・・・2つのオブジェクトを比較して、一致するかどうかを調べる
例 UserFormを作成し TextBox1、ComboBox1、CommandButton1を
貼り付けますCommandButton1をダブルクリックをすればコード表示されるのでそこで、
下記のコードを記述してください
Private Sub CommandButton1_Click()
Dim ObjA As Object: Dim ObjB As Object
Set ObjA = TextBox1
Set ObjB = ComboBox1
x = ObjA Like ObjY
MsgBox x
End Sub
結果はMsgBoxで xはFalseになることが表示されます
ο斥演算子
1つまたは2つの式を、条件を満たすかどうか真偽を判定します(1)Not・・・ひとつの真(True)偽(False)値を否定する
TrueならばFalse、FalseならばTrueを返します
例
A=1:B=2
x=Not(A=b) ・・・1式がFalseなのでx=True
(2)And・・・2式の両方がTrueのときだけ、Trueを返す
例
A=1:B=2:C=3:D=4
x=A<b And C<D ・・・両式がTrueなのでx=True
(3)Or・・・2式のうちどちらかがTrueであれば、Trueを返す
例
A=1:B=2:C=3:D=4
x=A<b Or C>D ・・・True False 1式がTrueなのでx=True
(4)Xor・・・2式のうちどちらかがFalseを含むとき、Trueを返す
2式の両方がTrue、または両方がFalseのときは、Falseを返す
例
A=1:B=2:C=3:D=4
x=A<b Xor C>D ・・・1式がTrue 2式がFalseなので x=True
(5)Eqv・・・2式の両方がTrue、または両方がFalseのときだけ、Trueを返す
例
A=1:B=2:C=3:D=4
x=A>b Eqv C>D ・・・False False 両式がFalseなので x=True
(6)Imp・・・1式がTrue、2式がFalseのときだけ、Falseを返す
例
A=1:B=2:C=3:D=4
x=A<b Or C>D ・・・x=True
以上がVBAで使用する6つの型の演算子ですが、
実際には Not And Orを使えば事足りると思います。つぎに演算子の優先順位についてです。
●演算子を使った式は、左から右が基本になっています
●ところが、演算子の種類によっては、下記のとおり優先順位により、実行の順位が変化します
優
先
順
位
↓
優先順位→
演算子の種類
演 算 子
算術
^
べき乗
−
マイナス
* /
乗算・除算
\
商
Mod
余り
+ −
加算減算
文字列連結
&(アンパサンド) +(プラス)
比較
Like
Is= 等しい、<> 等しくない、<より小さい、>より大きい、<=以下、>=以上
Like (指定した文字列が文字パターンの条件に一致しているかどうか)
Is (2つのオブジェクトを比較して、一致するかどうか)
論理
Not
And
Or
Xor
Eqv
Imp
今回は、演算子について述べてみましたが、いかがだったでしょうか?
VBAでは演算子は不可欠なものです。これをよく理解すれば、より効率的なプログラムを作ることが
できるでしょう^^
さて、次回はプログラムの実行の流れを制御するステートメント(処理を行う1つの完結した命令)
について述べていくことにしましょう
To be Continued …
05/11/27 作成
【HOME】 【INDEX】 【第1回】 【第2回】 【第3回】【第4回】