’–––––––––––––––––––––––––
’プロシージャの概要:
’処理名:テストパターン01-基本Call文
’概要:パターン1-3 基本的なCall文での呼び出し
’–––––––––––––––––––––––––
Sub sample01_基本Call文()
Call testProc1 ’パターン1
Call testProc2(100) ’パターン2
Call Module1.testProc3 ’パターン3
End Sub
’–––––––––––––––––––––––––
’プロシージャの概要:
’処理名:テストパターン04-直接呼び出し
’概要:パターン4-7 Call文を使わない直接呼び出し
’–––––––––––––––––––––––––
Sub sample02_直接呼び出し()
testProc4 ’パターン4
testProc5 “引数1”, 200 ’パターン5
Module2.testProc6 300 ’パターン6
End Sub
’–––––––––––––––––––––––––
’プロシージャの概要:
’処理名:テストパターン07-関数呼び出し
’概要:パターン7-8 関数呼び出しでの戻り値取得
’–––––––––––––––––––––––––
Function sample03_関数呼び出し() As Long
Dim lngResult As Long
lngResult = calcData(100) ’パターン7
sample03_関数呼び出し = Module3.calcTotal(lngResult) ’パターン8
End Function
’–––––––––––––––––––––––––
’プロシージャの概要:
’処理名:テストパターン09-オブジェクト
’概要:パターン9-12 オブジェクトメソッドと動的呼び出し
’–––––––––––––––––––––––––
Sub sample04_オブジェクト()
Dim objWorkbook As Workbook
Set objWorkbook = Workbooks.Add
objWorkbook.Save ’パターン9
Application.Run “dynamicProc” ’パターン10
Evaluate(“mathFunction()”) ’パターン11
End Sub
’–––––––––––––––––––––––––
’プロシージャの概要:
’処理名:テストパターン12-コロン区切り
’概要:パターン12-15 コロン区切りでの複数処理
’–––––––––––––––––––––––––
Sub sample05_コロン区切り()
Call testProc7: Call testProc8 ’パターン12
testProc9: testProc10 “arg” ’パターン13
Dim lngValue As Long: lngValue = calcValue(): Call processValue ’パターン14
If True Then Call conditionalProc: Exit Sub ’パターン15
End Sub
’–––––––––––––––––––––––––
’プロシージャの概要:
’処理名:テストパターン16-除外対象
’概要:パターン16-23 文字列・コメント内(除外対象)
’–––––––––––––––––––––––––
Sub sample06_除外対象()
Debug.Print “testProc11を呼び出します” ’パターン16
MsgBox “testProc12の結果です” ’パターン17
’ Call testProc13 これはコメント ’パターン18
testProc14 ’ ここでtestProc15も呼ぶべき? ’パターン19
Rem Call testProc16 ’パターン20
Dim strSQL As String
strSQL = “SELECT testProc17_Column FROM Table1” ’パターン21
Dim strMessage As String
strMessage = “testProc18の処理” ‘パターン22
‘’’ Call testProc19 複数シングルクォート ’パターン23
End Sub
’–––––––––––––––––––––––––
’プロシージャの概要:
’処理名:テストパターン24-特殊構文
’概要:パターン24-31 GoTo、エラーハンドリング等の特殊構文
’–––––––––––––––––––––––––
Sub sample07_特殊構文()
On Error GoTo ErrorHandler ’パターン24
GoSub SubRoutine1 ’パターン25
Resume Next ’パターン26
If True Then testProc20 Else testProc21 ’パターン27
Dim lngCounter As Long: lngCounter = 10: Call loopProc: lngCounter = 20 ’パターン28
DoEvents: Call waitProc ’パターン29
Dim objExcel As Object
Set objExcel = CreateObject(“Excel.Application”): objExcel.Quit ’パターン30
Call finalProc: GoTo EndProcess ’パターン31
SubRoutine1:
Call subRoutineProc
Return
ErrorHandler:
Call errorHandleProc
Resume Next
EndProcess:
Exit Sub
End Sub
’–––––––––––––––––––––––––
’プロシージャの概要:
’処理名:テストパターン32-With文
’概要:パターン32 With文でのメソッド呼び出し
’–––––––––––––––––––––––––
Sub sample08_With文()
Dim wsTarget As Worksheet
Set wsTarget = ActiveSheet
With wsTarget
.Activate
.Range(“A1”).Select
Call .protectSheet ’パターン32
End With
```
With Application
.ScreenUpdating = False: .enableEvents = False: .calculation = xlCalculationManual
End With
```
End Sub
’–––––––––––––––––––––––––
’プロシージャの概要:
’処理名:テストパターン補足-ネスト
’概要:ネストした呼び出しの補足パターン
’–––––––––––––––––––––––––
Sub sample09_ネスト()
Call processData(getValue(calcBase(100)))
Dim lngResult As Long
lngResult = Module4.complexCalc(getData(), getParameter())
End Sub
’–––––––––––––––––––––––––
’プロシージャの概要:
’処理名:テストパターン補足-エラー処理
’概要:エラーハンドリング付きの補足パターン
’–––––––––––––––––––––––––
Sub sample10_エラー処理()
On Error GoTo ErrorHandler
Call riskyProc1
Call riskyProc2: Call cleanupProc1
Exit Sub
ErrorHandler:
Call errorLogProc: Call cleanupProc2: Resume Next
End Sub
’実際のプロシージャ定義(呼び出される側)
Sub testProc1()
’テストプロシージャ1
End Sub
Sub testProc2(intValue As Integer)
’テストプロシージャ2
End Sub
Function calcData(lngInput As Long) As Long
calcData = lngInput * 2
End Function
Sub processValue()
’値処理プロシージャ
End Sub
Sub conditionalProc()
’条件付きプロシージャ
End Sub