Excel VBA質問箱 IV

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

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


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

【6500】イベント用モジュールを復活させたい kawata 03/7/4(金) 13:42 質問
【6506】Re:イベント用モジュールを復活させたい ichinose 03/7/4(金) 20:19 回答
【6510】Re:イベント用モジュールを復活させたい kawata 03/7/6(日) 9:22 お礼
【6513】Re:イベント用モジュールを復活させたい kawata 03/7/6(日) 11:58 発言
【6516】Re:イベント用モジュールを復活させたい ichinose 03/7/7(月) 7:29 回答
【6519】Re:イベント用モジュールを復活させたい kawata 03/7/7(月) 8:23 お礼
【6520】Re:イベント用モジュールを復活させたい kawata 03/7/7(月) 8:41 お礼
【6521】Re:イベント用モジュールを−できました! kawata 03/7/7(月) 8:53 お礼

【6500】イベント用モジュールを復活させたい
質問  kawata  - 03/7/4(金) 13:42 -

引用なし
パスワード
   kawataです、よろしくお願いします。
(Windows2000/Excel2000)

お世話になっております。
先日、「WinthEvents」を教えていただき(jujuさん)、
メニューブックから、新しいブックがオープンされた時の
イベントを取得するというルーチンで、各段にスムーズな
処理をさせるコードに作りかえることができました。
どうもありがとうございました。

で、いま少し思案中なのが、これをボタンでON/OFFせて
「監視中」←→「監視解除」のトグル状態を作れないか?と。

解除は、「END」をほりこめばできますよね?。
このあとの復活が、さっぱりわかりません。
(現在は再起動しております(^^;;;;)。

ぜひ、よろしくお願いします。

【6506】Re:イベント用モジュールを復活させたい
回答  ichinose  - 03/7/4(金) 20:19 -

引用なし
パスワード
   ▼kawata さん:
こんばんは。

>kawataです、よろしくお願いします。
>(Windows2000/Excel2000)
>
>お世話になっております。
>先日、「WinthEvents」を教えていただき(jujuさん)、
>メニューブックから、新しいブックがオープンされた時の
>イベントを取得するというルーチンで、各段にスムーズな
>処理をさせるコードに作りかえることができました。
>どうもありがとうございました。
>
>で、いま少し思案中なのが、これをボタンでON/OFFせて
>「監視中」←→「監視解除」のトグル状態を作れないか?と。
>
>解除は、「END」をほりこめばできますよね?。
>このあとの復活が、さっぱりわかりません。
>(現在は再起動しております(^^;;;;)。
>
>ぜひ、よろしくお願いします。


Private WithEvents objExcel As Excel.Application

Private Sub objExcel_WorkbookOpen(ByVal Wb As Workbook)

  MsgBox Wb.Name & "を開いたよ"
  ' ここでファイル名とかブック名とかで判断して処理を続けてね。
End Sub

Private Sub Workbook_Open()

  Set objExcel = Application
End Sub

jujuさんが解答したのは上記ですね(探しちゃった)

Set objExcel = Application
でイベント実行可能
Set objExcel = Nothing
イベントが発生しません

【6510】Re:イベント用モジュールを復活させたい
お礼  kawata  - 03/7/6(日) 9:22 -

引用なし
パスワード
   kawataです、よろしくお願いします。

ichinoseさん、ありがとうございました。

>jujuさんが解答したのは上記ですね(探しちゃった)

あっ、失礼しました、コピペしておいたほうがいいかな?とは
思ったのですが・・・。お手数おかけしました、すいません。

>Set objExcel = Application
>でイベント実行可能
>Set objExcel = Nothing
>イベントが発生しません

で、本題の(^^;、ありがとうございます、早速チェックします。
教えていただいたら、あっ、そうか!ですけど、独力では、どうも
そういうふうに頭が廻りません、またよろしくお願いします。

※昨日は休みでした、返事送れてすいません、ありがとうございました。
 (で、今日の日曜仕事です、なんだかな〜(^^;)

【6513】Re:イベント用モジュールを復活させたい
発言  kawata  - 03/7/6(日) 11:58 -

引用なし
パスワード
   kawataです、よろしくお願いします。

ichinoseさんにご教示いただいた、

>Set objExcel = Application でイベント実行可能
>Set objExcel = Nothing イベントが発生しません

を、ワークシートに作成したボタンに登録して、
作成してみたのですが・・・・、どうもうまく動きません。
記述先は標準モジュールです、私、何か勘違いしているような。
すいません、間違いをご指摘ください、よろしくお願いします。

Sub 監視ONOFF()
  With Sheets("main")
    If .Shapes("ButtonONOFF").TextFrame.Characters.Text Like "*OFF*" Then
      With .Range("C3")
        .Formula = "監視解除中"
        .Font.ColorIndex = 5
      End With
      Set objExcel = Nothing
      .Shapes("ButtonONOFF").TextFrame.Characters.Text = "監視ON!!"
    Else
      With .Range("C3")
        .Formula = "監視中!!"
        .Font.ColorIndex = 3
      End With
      Set objExcel = Application
      .Shapes("ButtonONOFF").TextFrame.Characters.Text = "監視OFF!!"
    End If
  End With
End Sub

【6516】Re:イベント用モジュールを復活させたい
回答  ichinose  - 03/7/7(月) 7:29 -

引用なし
パスワード
   ▼kawata さん:
おはようございます。
返事が遅れました。

>kawataです、よろしくお願いします。
>
>ichinoseさんにご教示いただいた、
>
>>Set objExcel = Application でイベント実行可能
>>Set objExcel = Nothing イベントが発生しません
>
>を、ワークシートに作成したボタンに登録して、
>作成してみたのですが・・・・、どうもうまく動きません。
>記述先は標準モジュールです、私、何か勘違いしているような。
>すいません、間違いをご指摘ください、よろしくお願いします。

Thisworkbookのモジュールで宣言してある

Private WithEvents objExcel As Excel.Application



Public WithEvents objExcel As Excel.Application

にして下さい。

さらに見せていただいた標準モジュールのコードでは


>
>Sub 監視ONOFF()
>  With Sheets("main")
>    If .Shapes("ButtonONOFF").TextFrame.Characters.Text Like "*OFF*" Then
>      With .Range("C3")
>        .Formula = "監視解除中"
>        .Font.ColorIndex = 5
>      End With
      Set ThisWorkbook.objExcel= Nothing
>      .Shapes("ButtonONOFF").TextFrame.Characters.Text = "監視ON!!"
>    Else
>      With .Range("C3")
>        .Formula = "監視中!!"
>        .Font.ColorIndex = 3
>      End With
      Set ThisWorkbook.objExcel = Application
>      .Shapes("ButtonONOFF").TextFrame.Characters.Text = "監視OFF!!"
>    End If
>  End With
>End Sub


としてみて下さい。

【6519】Re:イベント用モジュールを復活させたい
お礼  kawata  - 03/7/7(月) 8:23 -

引用なし
パスワード
   kawataです、おはようございます。

ichinoseさん、ありがとうございます。

>返事が遅れました。
とんでもないです、恐縮です。ありがとうございます。

>Public WithEvents objExcel As Excel.Application

>Set ThisWorkbook.objExcel= Nothing

>Set ThisWorkbook.objExcel = Application

>としてみて下さい。

これまた、なるほど!とうなずくばかりです。
早速チェックしてみます、ありがとうございました。

結果、報告します。

【6520】Re:イベント用モジュールを復活させたい
お礼  kawata  - 03/7/7(月) 8:41 -

引用なし
パスワード
   kawataです、よろしくお願いします。

ichinoseさん、ありがとうございました。

>Set ThisWorkbook.objExcel= Nothing

ここで、
「メソッドまたはデータ メンバが見つかりません」(コンパイルエラー)
が発生します。

Private→Public修正済です。

何度も申し訳ないですが、ぜひ、よろしくお願いします。

【6521】Re:イベント用モジュールを−できました!
お礼  kawata  - 03/7/7(月) 8:53 -

引用なし
パスワード
   kawataです、よろしくお願いします。

ichinoseさん、ありがとうございました。
すいません、大変失礼しました。

できました、できました。Thisworkbookのモジュールの
Private→Publicを変更したはいいけども、
最初の宣言(?)のところは、Privateのままテストして
いました。
(多分お見通しですか?(^^;)

で、はっと気が付いて、修正しました。
感動ものです、ほんとに。

ありがとうございました、これが出来るとできないとで・・・・
いま作っているプログラムの値打ちがぜんぜん違うような。

ありがとうございました。>ichinoseさん、jujuさん

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