|
|
本章では、プログラムを制御するVBA記述ルールと、コードサンプルを例示します。 |
|
|
|
|
|
|
|
|
プログラムの実行を一時的に中断する。
Stop |
|
|
|
|
繰り返し処理やプロセジャーから抜ける。
Exit Do
Exit For
Exit Function
Exit Property
Exit Sub |
|
|
|
|
|
プロセジャーやステートメントを終了させる。
End
End Function
End If
End Property
End Select
End Sub
End Type
End With
|
|
|
|
|
|
【呼び出しの制限】
Privatepロセジャーは同じモジュール内でのみ呼び出しが可能
【呼び出しの規則】
標準モジュールからクラスモジュールを呼び出す場合は、プロセジャーの前にクラスモジュール名を記述する。
ex.
クラスモジュールX.プロセジャーY
|
|
|
|
|
|
If 条件文 Then 処理1 'コードが1つの場合
If 条件文 Then 'コードが複数の場合
処理1
EndIf
ex.
If Counter < 20 Then Counte = 20
|
|
|
|
|
|
If 条件文 Then 処理1 Else 処理2 'コードが1つの場合
If 条件文 Then 'コードが複数の場合
処理1
Else 処理2
EndIf
|
|
|
|
|
|
If 条件文 Then
処理1
ElseIf
処理2 ElseIf
処理3
Else
処理4
EndIf
|
|
|
|
|
|
Select Case 領域/条件文
Case ケース1
処理1
Case ケース2
処理2
End Select
ex.
Select Case A
Case 10
X=1
Case 20
X=2
End Select |
|
|
|
|
|
While 条件文
-- ここに繰り返す処理を書く --
Wend
ex.
While Counter < 20
-- ここに繰り返す処理を書く --
Wend |
|
|
|
|
|
Do While 条件文
-- ここに繰り返す処理を書く --
Loop
Do
-- ここに繰り返す処理を書く --
Loop Until 条件文 |
|
|
|
|
|
For Counter = 1 To 20
-- ここに繰り返す処理を書く --
Next Counter |
|
|
|
|
|
『コレクション』の各オブジェクトや『配列』の各要素に対して繰り返し処理を実行する
Dim ss As Range
For Each ss In ActiveSheet.UsedRange
ss.Value = "使用範囲です"
Next |
|
|
|
|
|
SubやFunctionの中から、さらに自分自身を呼び出すような処理ができます。再帰呼び出しを利用することで、複雑な処理を非常に単純なコードとして実現できる場合があります。下の例では、「Msgbox
CC」を5回実行します。
ex.
Sub a()
CountDown (5)
End Sub
Function CountDown(cc As
Integer) As Integer
If cc > 0 Then
MsgBox cc
CountDown = CountDown(cc - 1)
Else
MsgBox
"ここまで"
End If
End Function |
|
|
|
|
|
Application.OnTime TimeValue("17:00:00"), "my_Procedure"
上の OnTime メソッドの設定を取り消す
Application.OnTime TimeValue("17:00:00"), "my_Procedure",,False |
|
|
|
|
|
Application.Wait "18:23:00"
次の使用例は、実行中のマクロを約 10 秒間停止します。
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime |
|
|
|
|
|
Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure" |
|
|
|
|
|
MYCUSTOM.XLM というマクロ シートで定義されている、My_Func_Sum という関数マクロを呼び出します。
マクロ シートは開かれている必要があります。この関数には 2 つの数値引数があり、次の使用例では1 と 5 が渡されます。
mySum = Application.Run("MYCUSTOM.XLM!My_Func_Sum", 1, 5)
MsgBox "マクロの結果: " & mySum
別の例
020補助簿.xls というブックのModule1というマクロ シートで定義されている、Import という関数マクロを呼び出します。マクロ
シートは開かれている必要はありません
Application.Run "020補助簿.xls!Module1.Import" |
|
|
|
|
|
Dim Msg
On Error GoTo ErrHndlr
'カーソルを時計マークにする
Application.Cursor = xlWait
'ステータスバーを表示する
Application.DisplayStatusBar = True
Open "a" For Input As #1
Application.StatusBar = "処理 50% 終了しました"
'標準に戻す
Application.Cursor = xlNormal
Application.DisplayStatusBar = False
Exit Sub
ErrHndlr:
Msg = "エラー番号 " & Str(Err.Number) & Err.Source & " でエラーが発生しました。" _
& Chr(13) & Err.Description
MsgBox Msg, , "エラー", Err.HelpFile, Err.HelpContext
'標準に戻す
Application.Cursor = xlNormal
Application.DisplayStatusBar = False |