Excel VBA質問箱 IV

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

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


11128 / 13646 ツリー ←次へ | 前へ→

【17920】アドインでのイベントプロシージャの扱いを教えてください mon 04/9/10(金) 14:04 質問[未読]
【17921】Re:アドインでのイベントプロシージャの扱... IROC 04/9/10(金) 14:09 回答[未読]
【17923】Re:アドインでのイベントプロシージャの扱... でれすけ 04/9/10(金) 14:24 回答[未読]
【17930】Re:アドインでのイベントプロシージャの扱... mon 04/9/10(金) 14:57 お礼[未読]
【17933】Re:アドインでのイベントプロシージャの扱... IROC 04/9/10(金) 16:02 回答[未読]
【17939】Re:アドインでのイベントプロシージャの扱... mon 04/9/10(金) 18:10 お礼[未読]
【17940】Re:アドインでのイベントプロシージャの扱... IROC 04/9/10(金) 18:23 回答[未読]
【17958】Re:アドインでのイベントプロシージャの扱... mon 04/9/11(土) 1:04 質問[未読]
【17959】Re:アドインでのイベントプロシージャの扱... IROC 04/9/11(土) 2:06 回答[未読]
【17965】Re:アドインでのイベントプロシージャの扱... mon 04/9/11(土) 11:47 お礼[未読]
【17925】アドインでのイベントプロシージャの扱いを... mon 04/9/10(金) 14:29 質問[未読]
【17926】Re:アドインでのイベントプロシージャの扱... IROC 04/9/10(金) 14:35 回答[未読]
【17927】Re:アドインでのイベントプロシージャの扱... mon 04/9/10(金) 14:48 質問[未読]
【17931】Re:アドインでのイベントプロシージャの扱... mon 04/9/10(金) 15:19 お礼[未読]

【17920】アドインでのイベントプロシージャの扱い...
質問  mon  - 04/9/10(金) 14:04 -

引用なし
パスワード
   VBA入門書レベルの者です。
知りたい情報を探すことができず困っています。
どなたか教えていただけませんでしょうか。

標準モジュールで以下のマクロを作成し、動作することを確認しました。

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

  MsgBox "test"
  
End Sub

このマクロを含むファイルをアドイン形式(xla)で保存し、そのアドインを組み込んでも動作しませんでした。

訳もわからず、いろいろなサイトに載っていたソースを参考にアドインを以下のように修正すると、アドインに組み込んだ時は動作しますが一旦ファイルを閉じて2回目以降は動作しません。

Private WithEvents myApp As Application

Private Sub Workbook_AddinInstall()

  Set myApp = Application
  
End Sub

Private Sub myApp_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

  MsgBox "test"
  
End Sub

なぜこうなるのでしょうか?

またこのようなことは何で調べればよいのでしょうか?(VBAのヘルプやインターネット、書籍等どこかにあるのだと思うのですが、私の能力では見つけられませんでした)

よろしくお願いいたします。

【17921】Re:アドインでのイベントプロシージャの...
回答  IROC  - 04/9/10(金) 14:09 -

引用なし
パスワード
   目的を教えて頂けませんか?

何がしたいのか判断できません。

【17923】Re:アドインでのイベントプロシージャの...
回答  でれすけ  - 04/9/10(金) 14:24 -

引用なし
パスワード
   こんにちわ

AddinInstallイベントは、アドインを組み込んだときのイベントです。
すなわち、エクセルのメニューで、[ツール]=>[アドイン]でそのアドインを
チェックしたときにだけ走ります。

エクセルを終了して再度起動すると、アドインのファイルが読み込まれますが、
このときは、AddinInstallイベントは発生しません。

なので、 
Set myApp = Application
は、アドインファイルの Workbook_Openイベントに書いてやらないといけません。

でわ。

【17925】アドインでのイベントプロシージャの扱い...
質問  mon  - 04/9/10(金) 14:29 -

引用なし
パスワード
   すいません。質問中で誤りがありました。

マクロは標準モジュールではなく、全てThisWorkbookへの記述でした。

【17926】Re:アドインでのイベントプロシージャの...
回答  IROC  - 04/9/10(金) 14:35 -

引用なし
パスワード
   回答者に対しての返答がないということは
解決したということでよいのでしょうか?

【17927】Re:アドインでのイベントプロシージャの...
質問  mon  - 04/9/10(金) 14:48 -

引用なし
パスワード
   ご返事が遅れ、申し訳ありませんでした。

現在作業中で、解決はしていません。

最終的に行いたいことは、シート上で右クリックした時に自分で追加したショートカットメニューでアドインのマクロを動作させるものを作りたいと思っています。

その際コピーモードでなければショートカットメニューをグレー表示で選択不可にしてマクロが実行できないようにしたいのです。

アドインではない単純なブック上のマクロだとうまくいくのですが、アドインにすると動作しないため、基本的なところから調べようと思ったのですが、どこを調べればよいかわからず悩んでいたところでした。

よろしくお願いします。

【17930】Re:アドインでのイベントプロシージャの...
お礼  mon  - 04/9/10(金) 14:57 -

引用なし
パスワード
   でれすけ さん

どうもありがとうございました。
この方法だとうまくいきました。

ただナゼ単純にアドインにしたのでは動作しないのかわかってないので、勉強したいと思っています。なにか参考になるものはありますでしょうか。

【17931】Re:アドインでのイベントプロシージャの...
お礼  mon  - 04/9/10(金) 15:19 -

引用なし
パスワード
   IROC さん

【17923】の方法でやりたいことはできました。ありがとうございます。

ただナゼできたのかがわかってないので、勉強します。

インターネットの掲示板を使用するのは初めてだったので、失礼があったことお詫びいたします。今後ともご指導お願いします。

【17933】Re:アドインでのイベントプロシージャの...
回答  IROC  - 04/9/10(金) 16:02 -

引用なし
パスワード
   >ただナゼ単純にアドインにしたのでは動作しないのかわかってないので、
>勉強したいと思っています。なにか参考になるものはありますでしょうか。

今回の件は、でれすけさんのご説明のとおりイベントの発生条件によるものですね。

イベントについて。
http://www.geocities.jp/vbaxl/event/000.html

【17939】Re:アドインでのイベントプロシージャの...
お礼  mon  - 04/9/10(金) 18:10 -

引用なし
パスワード
   ありがとうございました。

普通のマクロで動作するのにそのままアドインにすると動作しないのはナゼかは、まだ理解できていませんが、時間をかけて勉強してみます。

【17940】Re:アドインでのイベントプロシージャの...
回答  IROC  - 04/9/10(金) 18:23 -

引用なし
パスワード
   >普通のマクロで動作するのにそのままアドインにすると動作しないのはナゼかは、
>まだ理解できていませんが

何か誤解されていませんか?

普通のxlsブックには、AddinInstall()イベントはありませんよ? 

【17958】Re:アドインでのイベントプロシージャの...
質問  mon  - 04/9/11(土) 1:04 -

引用なし
パスワード
   >何か誤解されていませんか?
>普通のxlsブックには、AddinInstall()イベントはありませんよ? 

はい、xlsブックでマクロを組んだ時にはAddinInstall()イベントは記述していません。

アドインにする場合はAddinInstall()イベントまたは今回のWorkbook_Open()イベントが必須なのでしょうか。またはWorkbook_SheetBeforeRightClickイベントはアドインでは使えないのでしょうか。

最初の質問に書いた

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

  MsgBox "test"
  
End Sub

上記マクロをそのままアドインにした場合は動作しなくて、下記マクロはそのままアドインで動作するのはそういうことでしょうか?もしそうだとしてもそれはナゼか?がよくわかりません。

Private Sub Workbook_Open()

  MsgBox "test"
  
End Sub

多分ごくごく基本的なことが私にはわかってないのだと思います。
申し訳ありませんがそのあたりを教えていただけると助かります。

よろしくお願いいたします。

【17959】Re:アドインでのイベントプロシージャの...
回答  IROC  - 04/9/11(土) 2:06 -

引用なし
パスワード
   >アドインにする場合はAddinInstall()イベントまたは
>今回のWorkbook_Open()イベントが必須なのでしょうか。
EXCEL起動時に実行したいマクロであれば、
OPENイベントに記述しなくてはなりません。
AddinInstall()イベントは、組み込んだとき(チェックしたとき)のみ
実行されるものなので、確認メッセージや初期設定などでしか使わないので
基本的にはOPENを使います。

Private WithEvents myApp As Application

Private Sub Workbook_AddinInstall()

  Set myApp = Application


>またはWorkbook_SheetBeforeRightClickイベントは
>アドインでは使えないのでしょうか。
このイベントは、そのブックのイベントマクロです。
これを他のブックでもイベントを取得出来るようにするには、

>Private WithEvents myApp As Application
を宣言して、
>  Set myApp = Application
を実行する必要があります。つまりopenイベントで
>Set myApp = Application
することにより、他のブックのイベントを
アドインブックのイベントプロシージャで取得(利用)できるようになるのです。


>最初の質問に書いた
>
>Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
>
>  MsgBox "test"
>  
>End Sub
>
>上記マクロをそのままアドインにした場合は動作しなくて、

アドインブックはシートが非表示になるので、
そのように思えるだけです。
シートがあれば動作はするのです。

>下記マクロはそのままアドインで動作するのはそういうことでしょうか?
>もしそうだとしてもそれはナゼか?がよくわかりません。

>Private Sub Workbook_Open()
>
>  MsgBox "test"
>  
>End Sub
アドインブックはEXCEL起動時に自動的に開かれるので、
openイベントは実行されます。

シートモジュールのイベントと、
ブックのイベントでは対象範囲がおおきく異なります。

【17965】Re:アドインでのイベントプロシージャの...
お礼  mon  - 04/9/11(土) 11:47 -

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

アドインブックについて認識できてなかったことがわかり納得しました。

丁寧に教えてくださり、大変感謝しております。
どうもありがとうございました。

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