|
こんにちは。
前回の投稿をもう少し再利用しやすいように改良しました。
題して、繰り返し処理登録プロジェクト(題して言うほどではないなあ!!)
**設定方法
新規ブックにて。
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というプロジェクトが存在が確認できればこの「繰り返し処理登録」プロジェクトが使用可能になります。
|
|