ExcelVBA Step_5 制御構造 (1)

ステートメント

ステートメントには2つの意味があります。一つはプロシージャの命令文を意味するものです。
もう一つは、Excelの操作外のことを実現するための命令です。例えば、プログラム内の処理の流れを制御したり、データを操作するために使用される命令のことを言います。
ステートメントの種類に関しては、へルプのランゲージリファレンス、ステートメント の項目を参照ください。
下記のプロシージャは、Beepステートメントを使った例です。

Sub MyBeep()
'
'次の例は、Beep ステートメントを使って、コンピュータのスピーカを 3 回連続して鳴らします。

Dim I
For I = 1 To 3            ' ループを 3 回繰り返します。
    Beep                  ' ビープ音を鳴らします。
Next I


End Sub

演算子

VBAには4種類の演算子があります。

《算術演算子》
算術演算をするときに使います
演算子意味サンプル
+加算Range("A1") + Range("B1")
-減算Range("A1") - Range("B1")
* 乗算Range("A1") * Range("B1")
/ 除算Range("A1") / Range("B1")
べき乗Range("A1") ^ Range("B1")
\ 除算の商をRange("A1") \ Range("B1")
% 除算の余りRange("A1") % Range("B1")

《比較演算子》
IF〜Then〜Else ステートメントの中で条件の比較を行うときに使います。
演算子記入例意味
=Range( "A1") = 100 100と等しい
>Range( "A1") > 100 100より大きい
<Range( "A1") < 100 100より小さい
>=Range( "A1") >= 100 100以上
<=Range( "A1") <= 100 100以下
<>Range( "A1") <> 100 100でない

《文字連結演算子》
文字を連結するときに使う演算子です。主にMsgBox関数と一緒に使われます。
次の例題では、MsgBox関数を使って文字列と変数を連結しています。
"固定文字列" & 変数 & "です"

Sub 文字型変数()
     Dim firstbookname As String 
     firstbookname = Workbooks(1).Name 
     MsgBox "最初に開いたブックは " & firstbookname & "です"
 
End Sub
 

《実行結果》


《論理演算子》
And演算子とOr演算子は、If 〜 Then 〜 Else ステートメントの中で、条件を連結するときに使います。
Not演算子は、Withステートメントの中でよく使われます。

Sub And演算子()

   'And演算子で連結されたIfステートメントでは、条件がすべて満たされた場合にのみ
   'Trueが返されます。
   
   Dim num1 As Integer
   Dim num2 As Integer
   
   num1 = 200
   num2 = 100
   
   If num1 >= 200 And num2 >= 100 Then
      MsgBox "条件を満たしています"
   Else
      MsgBox "条件を満たしていません"
   End If

《実行結果》


VBA関数

Excelに搭載されている関数を、ワークシート関数と言いますが、VBAというプログラミング言語も独自の関数を搭載しています。 これをVBA関数と呼びます。
VBAには140以上の関数が用意されています。
次の例は、Int関数を使ったプロシージャです。
Sub Int関数()

   Range("A1") = 111.25
   Range("A2") = Int(Range("A1"))

End Sub

《実行結果》


ワークシート関数


Sub 最大値()

'ワークシート関数を使って、最大値を求める

Dim myMax As Range

    Set myMax = Worksheets("売上集計").Range("D6:D12")
    answer = Application.WorksheetFunction.Max(myMax)
 
    MsgBox "最大値は" & answer & " です"

《実行結果》