|
▼B-BOSS さん:
こんにちは。
>ichinoseさんに教えていただいたコードでは、いきなり
>クラスのモジュールが動作してしまいました。
そうなるようにしたつもりです・・・。
> 現在、私が検討しているのは、次の内容です。
>現在既にアドインに登録してある内容のコードがあります。
> 内容は簡単な物で行を追加したり、又削除したり、文字列を
>入力したりするものです。
>つまり、ワークシートのスタイルに変更を与える物です。
> そしてその変更が完了してから、そのシート(又はブック)に
>WORKSHEET_Change イベント を作成したいのです。
考え方としては、
Set acc_bk = Wb(ブックのオブジェクトという意味で)
のコードをどこで実行させるかという問題だと思いますが、
既に作成してあるコードでは「ワークシートのスタイルに変更」をしているとのこと、
コード内では、対象ブックが特定できますよね(Activeworkbookかもしれません、あるいは、Workbooks("xxx")という指定が可能なのかもしれません)。
そのプロシジャーが書かれているモジュールで、
'========================================
Private app_ev As Class1
'========================================
Private Sub アドインプロシジャー()
' 既に作成されているコード
' ・
' ・
' ・
Set app_ev = New Class1
' ↑当初考えていたものと違ってきていますから、変数名は変えてください
' 尚、このSetは、一度だけでよいと思いますが(どこか他のところ
' で例えばWorkbook_Open)、全体が見えないのでとりあえずここで設定。
Set app_ev.acc_bk = ActiveWorkbook
' ↑イベントを発生させたいブックを指定する
End Sub
クラスモジュールでは、
'====================================================
Public WithEvents acc_bk As Workbook
'↑今度は、クラス外からも設定できるようにPublicで宣言
'====================================================
Private Sub acc_bk_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox "ブック: " & acc_bk.Name & "-シート: " & Sh.Name & "-:セル: " _
& Target.Address & " が変更されました"
End Sub
とすると、アドインブログラムの実行後に指定したブックでChangeイベントが可能になるかと思いますが・・・。
|
|