|
|
|||||||||
| 本章では、プログラムを制御するVBA記述ルールと、コードサンプルを例示します。 | |||||||||
|
|||||||||
|
GoTo ラベル名
ラベル名: |
|||||||||
|
|||||||||
|
|
プログラムの実行を一時的に中断する。 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 |
|||||||||
| ご意見・ご感想をお寄せください。info@beagle-hc.com ‖ このサイトについて | |||||||||
| Copyright 2006 - 2009 uTRAM Corp. All Rights Reserved | |||||||||