[PR]牝綾
Infoseek 喨涓截


【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 で返します

   = (イコール) 等しい
   <> 等しくない
   <  より小さい
   >  より大きい
   <= 以下
   >= 以上 
  
  例
Sub Test3()
Dim X, Y, Z

 X = 100: Y = 100
 Z = X = Y
 MsgBox Z

End Sub
    X、Y、Zはそれぞれ、バリアントで宣言しました。
    ZはTrueで返されます
    Dim X%, Y%, Z%
    と、すべて、整数型に宣言するとどうでしょう!!
    値は -1 となります。 Trueは -1 ということがわかりますね!!
    (ちょっと余談でした!!)

    でも、小生が使用する場合、こういった使い方よりも、
    If文などと合わせた方法で利用しています

  例
Sub Test4()
Dim X%, Y%, Z%
 X = 100: Y = 100

 If X = Y Then
  Z = X
 End If

 MsgBox Z

End Sub
   ダイアログボックスに100と表示されます。

  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回】