| 
    
     |  | こんにちは。 前回の投稿をもう少し再利用しやすいように改良しました。
 
 題して、繰り返し処理登録プロジェクト(題して言うほどではないなあ!!)
 
 
 **設定方法
 
 
 新規ブックにて。
 
 Thisworkbookのモジュールに
 
 ‘=========================================================================
 Option Explicit
 Event timejust(t_int As Date, cancel As Boolean)
 Sub timer_exe()
 Dim cancel As Boolean
 Dim t_int As Date
 RaiseEvent timejust(t_int, cancel)
 If cancel = False Then
 Application.OnTime Now() + t_int, "thisworkbook.timer_exe"
 End If
 End Sub
 
 このブックにクラスモジュールを追加してください。
 
 クラス名  Class1
 
 VBEのプロジェクトエクスプローラーにてこのClass1を選択した状態で
 F4キーを押してください。Class1のモジュールのプロパティが表示されます。
 
 Instancingという項目を既定値の「1 − Private」から
 「2 − PublicNotCreatable」に変更してください。
 
 Class1のクラスモジュールに以下のコードです。
 
 ‘============================================================================
 Option Explicit
 Event timerjust(ByVal cnt As Long, cancel As Boolean, t_para As Variant)
 Dim WithEvents bk As ThisWorkbook
 Private ct_int As Date
 Private ct_prm() As Variant
 Private ct_pcnt As Long
 Private ct_cnt As Long
 ‘============================================================================
 Sub timer_set(interval As Date, ParamArray para() As Variant)
 '連続処理を定義する
 ' input interval 連続処理の時間的間隔
 '     para() イベントプロシジャーに渡すパラメータデータ
 Dim g0 As Long
 Erase ct_prm()
 ct_int = interval
 ct_pcnt = UBound(para()) + 1
 For g0 = LBound(para()) To UBound(para())
 ReDim Preserve ct_prm(g0)
 ct_prm(g0) = para(g0)
 Next
 Application.OnTime Now() + ct_int, "thisworkbook.timer_exe"
 ct_cnt = 0
 End Sub
 ‘============================================================================
 Private Sub bk_timejust(t_int As Date, cancel As Boolean)
 t_int = ct_int
 If ct_pcnt = 0 Then
 RaiseEvent timerjust(ct_cnt + 1, cancel, False)
 Else
 RaiseEvent timerjust(ct_cnt + 1, cancel, ct_prm())
 End If
 ct_cnt = ct_cnt + 1
 End Sub
 ‘============================================================================
 Private Sub Class_Initialize()
 Set bk = ThisWorkbook
 End Sub
 ‘============================================================================
 Private Sub Class_Terminate()
 Set bk = Nothing
 End Sub
 
 更に標準モジュールに上記のクラスのインスタンスを取得する関数を記述します。
 ‘===========================================================================
 Function get_class() As Class1
 Set get_class = New Class1
 End Function
 
 
 このプロジェクトに独自のプロジェクト名を付けます。
 
 VBEのプロジェクトエクスプローラーにて当該プロジェクトを選択した状態で
 「ツール」-----「VBAProjectのプロパティ」とクリックしてください。
 
 「プロジェクトプロパティ」ダイアログが表示されます。
 
 全般タブのプロジェクト名入力欄に「reptproc」(両端の「」は除く)と指定して、OKボタンをクリックしてください。
 
 これでプロジェクト名が独自のものになりました。
 
 Excelに戻って、適当な名前で保存します。
 様々な繰り返し処理に使用可能にするのですから、アドインとして保存します。
 
 名前を付けて保存を選択し、ファイルの種類として「Maicrosoft Excelアドイン(*.xla)」を選択し、
 ファイル名としてプロジェクト名と同じように Reptproc.xla と命名して適当なフォルダに保存してください。
 
 一度、Excelを閉じて再度起動してみてください。
 
 「ツール」----「アドイン」とクリックしてアドインダイアログを表示させます。
 
 有効なアドイン一覧にreptprocがあれば、チェックしてください。
 なければ、参照ボタンをクリックしてreptproc.xlaの存在するフォルダから登録してください。
 
 登録後、VBEにて、reptprocというプロジェクトが存在が確認できればこの「繰り返し処理登録」プロジェクトが使用可能になります。
 
 
 |  |