■1-7 演算子の種類と優先順位
演算子と言うと「+」「-」「÷」などの「算術算術演算子」を思い浮かべますが、他にも表17で示す「関係演算子」
「文字連結演算子」「理論演算子」があります。優先順位などを知りたい場合はこの一覧表が活用できます。
【表17 演算子一覧】
演算子の概要 演算子 内容 優先順位
 
算術演算子
 
 
 
 
 
^ 数値のべき乗を求める  
高い


 
低い
 
- 引き算
* 掛け算
/ 割り算(浮動小数点)
\ 割り算(整数)(余りはカット)
Mod 割り算(余り)(整数部カット)
+ 足し算
 
関係演算子
 
 
 
 
 
 
= 左辺と右辺は等しい  
高い
 


 
低い
 
<> 左辺と右辺は等しくない
< 右辺より左辺が小さい
> 右辺より左辺が大きい
<= 左辺より右辺が小さいか等しい
>= 右辺より左辺が大きいか等しい
Like 二つの文字の比較
Is 二つのオブジェクト変数の比較
文字連結演算子
 
& 2つの文字列の連結  
 
+ 2つの文字列の連結
 
論理演算子
 
 
 
 
Not 式の論理可否を求める  
 
 
 
 
 
And 2つの式の論理積を求める
Or 2つの式の論理輪和を求める
Xor 2つの式の排他的論理和
Eqv 2つの式の論理等価演算
Imp 2つの式の論理包含演算




(1)「\」と「Mod」を使用した例(10進16進対照表)
演算子についてはサンプルマクロでも各所で使用しており、特にこの項目で詳しく説明する必要はありません
が、「\」と「Mod」を使ったマクロ例を紹介します。(実行例は画面46参照)
画面46 10進16進対照表

Sub 演算子1()
Dim i As Integer, rr As Integer, cc As Integer
For i = 1 To 256
    rr = i \ 16
    cc = i Mod 16
    If cc = 0 Then
        cc = 16
        rr = rr - 1
    End If
        If rr = 0 Then Cells(1, cc + 1) = Hex(cc - 1)
        If cc = 1 Then Cells(rr + 2, cc) = Hex(rr)
    Cells(rr + 2, cc + 1) = i - 1
Next
Rows("1").HorizontalAlignment = xlCenter
Columns("A").HorizontalAlignment = xlCenter
Range("A1:Q1").Interior.ColorIndex = 37
Range(Cells(1, 1), Cells(rr + 2, 1)).Interior.ColorIndex = 37
 
End Sub




(2)「\」と「Mod」を使用した例(数字からセル位置計算例)
これは前述の(1)と同じ計算式ですが、こちらは数字を指定すると、記載 
セルを選択します。また指定した10進の数字をメッセージボックスで
16進に表示します(実行例は画面47、画面48参照)。
(本サンプルマクロは前項で作成した画面46の表が対象です)
画面47 数字選択例


画面48 表内の指定数字セルを選択例


Sub 演算子2()
Dim suzi As Integer, rr As Integer, cc As Integer, abc As String
 suzi = InputBox$("指定した数字の場所を選択", "場所選択")
    rr = suzi \ 16
    cc = suzi Mod 16
 
        Cells(rr + 2, cc + 2).Select
 
    abc = Chr((cc + 2) + 64)
    MsgBox rr + 2 & abc & "セルを選択しました" & Chr(10) & Chr(10) & _
    "なお、10進数「" & suzi & "」は16進で【" & Hex(suzi) & "】です。"
End Sub




(3)「+」と「&」使用上の注意点
2つの数値を「+」で和が求められますが、[&」の場合は結合になります
(実行例は画面49参照)
2つの文字列は「+」でも「&」でも結合で同じ結果になりますが、数値を
文字変数に入れ処理することもあるので和と結合が混乱するケースがある
ので、文字列の結合は「+」は止めて「&」を使用した方がよい。

画面49 「+」と「&」使用上の注意点マクロ実行例


Sub 演算子3()
Dim a1 As Integer, b1 As Integer, c1 As Variant, d1 As Variant
Dim a2 As String, b2 As String, c2 As Variant, d2 As Variant
 
a1 = 11: b1 = 22: a2 = 11: b2 = 22: a3 = 11: b3 = 22
c1 = a1 & b1
d1 = a1 + b1
 
c2 = a2 & b2
d2 = a2 + b2
 
c3 = a3 & b3
d3 = a3 + b3
 
MsgBox "a1 " & Chr(38) & " b1=" & c1 & Chr(10) _
      & "a1 + b1=" & d1 & Chr(10) & Chr(10) _
      & "a2 " & Chr(38) & " b2=" & c2 & Chr(10) _
      & "a2 + b2=" & d2 & Chr(10) & Chr(10) _
      & "a3 " & Chr(38) & " b3=" & c3 & Chr(10) _
      & "a3 + b3=" & d3
End Sub
 



【参考171】 変数の状態を調べるのに便利な「Is関数」一覧表
Is**関数は、変数の状態や中身を知りたい時よく使用する便利な関数です。
一覧表があると更に見易いので作成しました。
【表17a 「Is関数」一覧表】
No 関数 内容 例文 記事
1 IsArray 変数が配列か調べる IsArray(varname) 配列の場合True
2 IsDate 日付に変換できるか調べる IsDate(expression) 可能の場合True
3 IsEmpty 変数がEmpty値か調べる IsEmpty(Variant型変数) Empty値の場合True
4 IsError 変数がエラー値か調べる IsError(expression) エラー値の場合True
5 IsMissing 省略可能な引数が渡されたか IsMissing(Variant型変数) 渡されてないTrue
6 IsNull 値がNull値か調べる IsNull(expression) Null値の場合True
7 IsNumeric 数値として認識できるか調べる IsNumeric(expression) 可能の場合True
8 IsObject 変数がオブジェクト型か調べる IsObject(変数名) 配列の場合True


【戻る】    【Top画面】   【HPへ】