Excel VBA質問箱 IV

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

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


19176 / 76734 ←次へ | 前へ→

【62994】Re:ワークブック、ワークシートが変わったときのイベント
発言  kanabun  - 09/9/30(水) 9:47 -

引用なし
パスワード
   ▼mixia さん:

> VBAが記述されているワークブックではないワークブック(シート)
> からさらに別のワークブック(シート)が選択されたといったこと
> を取得することは可能でしょうか?

いわゆるアプリケーションレベルのイベントのことですよね?
これはExcel.Applicationクラスにあります。

そのUserForm で
ひとつExcel.Applicationのインスタンスを「イベント付きで」作成
して、テストしてみてください。

'------------------------------- UserForm モジュール
Option Explicit

Private WithEvents XLApp As Excel.Application

↑UserForm モジュールの宣言セクションに上のように宣言すると、
コードウィンドウの上部の左のドロップダウンリストに
--------------▼
 (General)
 ComboBox1
 Userform1
 XLApp   <--- これが追加される
--------------
いま宣言したXLAppクラスが 他のコントロールにならんで追加されたこと
が確認できます。

で、これを使うためにはまず
UserFormの初期化イベントプロシージャに、
XLAppクラスを実行可能なオブジェクトにする(インスタンスを作成する)
設定をしておきます。↓
Private Sub UserForm_Initialize()
  Set XLApp = Excel.Application
End Sub

また、UserFormが閉じるとき、XLAppオブジェクトも終了するために
UserFormの終了イベントに以下のように、インスタンスを破棄して
おきます。
Private Sub UserForm_Terminate()
  Set XLApp = Nothing
End Sub

あとは、コードウィンドウの先ほどの左ドロップダウンから
 -----------▼      -------------------------▼
  XLApp          WindowActivate
              WindowDeactivate 
------------
「XLApp」 を選ぶと コードウィンドウの右ドロップダウンにXLApp 関連の
Event リストがずらっと出てきますので、やろうとしている処理にあった
Eventを選んで、そのイベントプロシージャ内に処理を記述します。
たとえば、ウィンドウが切り替わった時にはApplicationレベルの
WindowDeactivate イベントやWindowActivateイベントが発生しますので
ここで現在アクティブになっているWindowのZoomを取得すればよいわけです。

Private Sub XLApp_WindowActivate(ByVal Wb As Workbook, ByVal Wn As Window)
  MsgBox Wn.Zoom
End Sub
といった感じで。

シートが切り替わったときには、SheetActivateイベントが発生するので
ここに処理を書いておいてもいいかもしれません。
Private Sub XLApp_SheetActivate(ByVal Sh As Object)
  MsgBox XLApp.ActiveWindow.Zoom
End Sub

6 hits

【62991】ワークブック、ワークシートが変わったときのイベント mixia 09/9/30(水) 0:25 質問
【62993】Re:ワークブック、ワークシートが変わった... Jaka 09/9/30(水) 9:18 発言
【62995】Re:ワークブック、ワークシートが変わった... Jaka 09/9/30(水) 9:57 発言
【62994】Re:ワークブック、ワークシートが変わった... kanabun 09/9/30(水) 9:47 発言
【63014】Re:ワークブック、ワークシートが変わった... mixia 09/9/30(水) 22:49 お礼
【63003】Re:ワークブック、ワークシートが変わった... neptune 09/9/30(水) 16:11 発言
【63016】Re:ワークブック、ワークシートが変わった... mixia 09/9/30(水) 23:07 お礼

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