Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


30614 / 76738 ←次へ | 前へ→

【51389】繰り返し処理プロジェクト 設定編
回答  ichinose  - 07/9/14(金) 10:46 -

引用なし
パスワード
   こんにちは。
前回の投稿をもう少し再利用しやすいように改良しました。

題して、繰り返し処理登録プロジェクト(題して言うほどではないなあ!!)


**設定方法


新規ブックにて。

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というプロジェクトが存在が確認できればこの「繰り返し処理登録」プロジェクトが使用可能になります。

0 hits

【51308】OnTimeメソッドで呼び出すプロシージャへの引数の渡し方 jabjab 07/9/11(火) 13:49 質問
【51312】Re:OnTimeメソッドで呼び出すプロシージャ... Lindy 07/9/11(火) 15:20 発言
【51313】Re:OnTimeメソッドで呼び出すプロシージャ... jabjab 07/9/11(火) 15:42 発言
【51374】Re:OnTimeメソッドで呼び出すプロシージャ... ichinose 07/9/13(木) 19:10 発言
【51375】Re:OnTimeメソッドで呼び出すプロシージャ... ichinose 07/9/13(木) 20:22 発言
【51389】繰り返し処理プロジェクト 設定編 ichinose 07/9/14(金) 10:46 回答
【51390】繰り返し処理プロジェクト 運用編 ichinose 07/9/14(金) 10:47 回答

30614 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free