New-ZZZ

NewBaseMacro

 NewBaseMacro(2025)
 こちらは、基本となるメインのプロシージャ、Call されるサブプロシージャ、Call され Callするサブプロシージャ例です。
 作成時、修正時の開発効率とデバッグのしやすさを重視した構成にしています。

  1. まず、下記ボックス内をコピーし、標準モジュールに貼り付ける。
  2. 次に、モジュール名を【ZZZ_BasePros 】に変更する。
  3. 利用時は、使用する標準モジュールにプロシージャをコピーし、☆☆☆、★★★、●●● 等の記号を、【Ctrl】+【H】で、プロシージャー名に置き換えて、使用する。
 Module : ZZZ_BasePros   ‘開発時使用モジュール
Option Explicit

'====================================================
' Main Sub:処理の起点。 単独で実行される。
'====================================================

Sub ☆☆☆()

Dim i As Long
Dim MaxRow As Long '最終行

Dim myMsg As String
Dim strRng As String
Dim sttTime As Date
Dim endTime As Date
Dim exeTime As Date

Dim nmlTmn As Boolean '正常終了フラグ:normal Termination

myProcd = "☆☆☆"
On Error GoTo ☆☆☆_Err


'正常終了フラグ 初期化
nmlTmn = False
IsCall = False '初期値

'ステータスバーに処理表示中
Call showStatus("~ 処理中...")

'初期設定
strRng = "I8"
sttTime = Now()

'作業開始時間を記録
Call InputStt(strRng)

'画面更新停止・オブジェクト設定
Call StopUpdating
Call SetObject

'-----------------------------------------------------------
'ここにメイン処理を記入
' With ActiveSheet
' 'A列基準最終行取得
' MaxRow = .Cells(Rows.Count, 1).End(xlUp).Row
' For i = 2 To MaxRow
'
' Next i
' End With
'-----------------------------------------------------------




'=====================================================
' IsCall = True
' Call ★★★
' IsCall = False
'=====================================================


'正常終了フラグON
nmlTmn = True

☆☆☆_Exit:

'エラーを無視
On Error Resume Next
'オブジェクト解放・画面更新再開
Call ReSetObject
Call Updating
endTime = Now()
exeTime = endTime - sttTime

If nmlTmn Then
Call InputEnd(strRng, exeTime)
MsgBox " 完了♪"
Else
''【Main】シート エラー日時記入
'Call InputErr(strRng, exeTime)
'MsgBox "異常終了しました。", vbExclamation, myProcd

End If

'エラー制御を戻す
On Error GoTo 0
Exit Sub

☆☆☆_Err:

Bln_Err = True
endTime = Now()
exeTime = endTime - sttTime
Debug.Print exeTime

'【ESC】で止められた場合
If Err.Number = 18 Then
If MsgBox("マクロを終了しますか?", vbYesNo) = vbNo Then
'止めた処理に戻る
Resume
Else
Call exeBreak
'メッセージ欄を空白にする
'Call InputResume(shtName, strRng)


Err.Clear 'エラー情報クリア

GoTo ☆☆☆_Exit
End If
'その他のエラー
Else
'【Main】シート エラー日時記入
Call InputErr(strRng, exeTime)

MsgBox "実行時エラー:" & Err.Number & "" & _
Err.Description & vbCr & _
"処理を終了します。", vbExclamation, myProcd
Call exeBreak
Err.Clear 'エラー情報クリア
GoTo ☆☆☆_Exit
End If

End Sub

'-----------------------------------------------------------------------
'  Call Sub    Callされる
'-----------------------------------------------------------------------

Sub ★★★()

Dim i As Long
Dim MaxRow As Long '最終行

Dim myMsg As String
Dim strRng As String
Dim sttTime As Date
Dim endTime As Date
Dim exeTime As Date

Dim nmlTmn As Boolean '正常終了フラグ:normal Termination

myProcd = "★★★"
On Error GoTo ★★★_Err

'ステータスバーに処理表示中
Call showStatus("~ 処理中...")


'単独実行時
If IsCall = False Then
'正常終了フラグ 初期化
nmlTmn = False
sttTime = Now()
Call StopUpdating
Call SetObject
End If

'-----------------------------------------------------------
'ここにメイン処理を記入
' With ActiveSheet
' 'A列基準最終行取得
' MaxRow = .Cells(Rows.Count, 1).End(xlUp).Row
' For i = 2 To MaxRow
'
' Next i
' End With
'-----------------------------------------------------------


'=====================================================
'単独実行時

If IsCall = False Then
'正常終了フラグ ON
nmlTmn = True
End If
'=====================================================

★★★_Exit:


If IsCall = False Then

'エラーを無視
On Error Resume Next
'オブジェクト解放・画面更新再開
Call ReSetObject
Call Updating

endTime = Now()
exeTime = endTime - sttTime

If nmlTmn Then
Call InputEnd(strRng, exeTime)
MsgBox " 完了♪"
Else
''【Main】シート エラー日時記入
'Call InputErr(strRng, exeTime)
'MsgBox "異常終了しました。", vbExclamation, myProcd

End If

'エラー制御を戻す
On Error GoTo 0

End If

Exit Sub
★★★_Err:

endTime = Now()
exeTime = endTime - sttTime
Debug.Print exeTime
'【ESC】で止められた場合
If Err.Number = 18 Then
If MsgBox("マクロを終了しますか?", vbYesNo) = vbNo Then
Resume
Else
Call exeBreak
'メッセージ欄を空白にする
'Call InputResume (shtName, strRng)

Err.Clear 'エラー情報クリア
GoTo ★★★_Exit
End If
'その他のエラー
Else
'【Main】シート エラー日時記入
MsgBox "実行時エラー:" & Err.Number & "" & _
Err.Description & vbCr & _
"処理を終了します。", vbExclamation, myProcd

Call exeBreak

Err.Clear 'エラー情報クリア
GoTo ★★★_Exit
End If
End Sub

'-----------------------------------------------------------------------
' 中間処理 Call Sub CallされCallする
'-----------------------------------------------------------------------

Sub ●●●()

Dim i As Long
Dim MaxRow As Long '最終行

Dim myMsg As String
Dim strRng As String
Dim sttTime As Date
Dim endTime As Date
Dim exeTime As Date

Dim nmlTmn As Boolean '正常終了フラグ:normal Termination

myProcd = "●●●"
On Error GoTo ●●●_Err

'ステータスバーに処理表示中
Call showStatus("~ 処理中...")

'単独実行時

If IsCall = False Then
'正常終了フラグ 初期化
nmlTmn = False
sttTime = Now()
Call StopUpdating
Call SetObject
End If

'BlnCallフラグを立てる
BlnCall = True


'-----------------------------------------------------------
'ここにメイン処理を記入
' With ActiveSheet
' 'A列基準最終行取得
' MaxRow = .Cells(Rows.Count, 1).End(xlUp).Row
' For i = 2 To MaxRow
'
' Next i
' End With


'BlnCallフラグを立てる
BlnCall = True
Call ●★●
BlnCall = False

'-----------------------------------------------------------

'=====================================================
'単独実行時
If IsCall = False Then
'正常終了フラグ ON
nmlTmn = True
End If
'=====================================================


●●●_Exit:
If IsCall = False Then

'エラーを無視
On Error Resume Next
'オブジェクト解放・画面更新再開
Call ReSetObject
Call Updating

endTime = Now()
exeTime = endTime - sttTime

If nmlTmn Then
Call InputEnd(strRng, exeTime)
MsgBox " 完了♪"
Else
''【Main】シート エラー日時記入
'Call InputErr(strRng, exeTime)
'MsgBox "異常終了しました。", vbExclamation, myProcd

End If

'エラー制御を戻す
On Error GoTo 0

End If

Exit Sub

●●●_Err:
endTime = Now()
exeTime = endTime - sttTime
Debug.Print exeTime
'【ESC】で止められた場合
If Err.Number = 18 Then
If MsgBox("マクロを終了しますか?", vbYesNo) = vbNo Then
Resume
Else
Call exeBreak
'メッセージ欄を空白にする
'Call InputResume (shtName, strRng)

Err.Clear 'エラー情報クリア
GoTo ●●●_Exit
End If
'その他のエラー
Else
'【Main】シート エラー日時記入
MsgBox "実行時エラー:" & Err.Number & "" & _
Err.Description & vbCr & _
"処理を終了します。", vbExclamation, myProcd

Call exeBreak

Err.Clear 'エラー情報クリア
GoTo ●●●_Exit
End If
End Sub

'-----------------------------------------------------------------------
'  Call Sub   ●●●から Callされる
'-----------------------------------------------------------------------

Sub ●★●()

Dim i As Long
Dim MaxRow As Long '最終行

Dim myMsg As String
Dim strRng As String
Dim sttTime As Date
Dim endTime As Date
Dim exeTime As Date

Dim nmlTmn As Boolean '正常終了フラグ:normal Termination

myProcd = "●★●"
On Error GoTo ●★●_Err

'ステータスバーに処理表示中
Call showStatus("~ 処理中...")


'単独実行時
If BlnCall = False Then
'正常終了フラグ 初期化
nmlTmn = False
sttTime = Now()
Call StopUpdating
Call SetObject
End If

'-----------------------------------------------------------
'ここにメイン処理を記入
' With ActiveSheet
' 'A列基準最終行取得
' MaxRow = .Cells(Rows.Count, 1).End(xlUp).Row
' For i = 2 To MaxRow
'
' Next i
' End With
'-----------------------------------------------------------

'=====================================================

'単独実行時
If BlnCall = False Then
'正常終了フラグ ON
nmlTmn = True
End If
'=====================================================

●★●_Exit:


If BlnCall = False Then

'エラーを無視
On Error Resume Next
'オブジェクト解放・画面更新再開
Call ReSetObject
Call Updating

endTime = Now()
exeTime = endTime - sttTime

If nmlTmn Then
Call InputEnd(strRng, exeTime)
MsgBox " 完了♪"
Else
''【Main】シート エラー日時記入
'Call InputErr(strRng, exeTime)
'MsgBox "異常終了しました。", vbExclamation, myProcd

End If

'エラー制御を戻す
On Error GoTo 0

End If

Exit Sub
●★●_Err:

endTime = Now()
exeTime = endTime - sttTime
Debug.Print exeTime
'【ESC】で止められた場合
If Err.Number = 18 Then
If MsgBox("マクロを終了しますか?", vbYesNo) = vbNo Then
Resume
Else
Call exeBreak
'メッセージ欄を空白にする
'Call InputResume (shtName, strRng)

Err.Clear 'エラー情報クリア
GoTo ●★●_Exit
End If
'その他のエラー
Else
'【Main】シート エラー日時記入
MsgBox "実行時エラー:" & Err.Number & "" & _
Err.Description & vbCr & _
"処理を終了します。", vbExclamation, myProcd

Call exeBreak

Err.Clear 'エラー情報クリア
GoTo ●★●_Exit
End If
End Sub

コメント

タイトルとURLをコピーしました