[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『新規シートにマクロをマクロで記述(ユーザーフォームを含む)』(TKG)
初めて質問させて頂きます.
こちらには幾度か訪問させて頂き,大変ありがたく思っています.
この度,どうしても解決の糸口がつかめない問題が生じましたので,ご助力頂ければと思います.
現在,あるマクロ(仮にマクロAとします)の中にユーザーフォームが2つあります.1つはそのマクロAの中で役目を果たし,unloadされています.もう1つのユーザーフォームですが,このマクロAによって作成されたシート内にあるグラフを操作するもので,そのシートに常駐させておきたいです.(マクロAによって各シートにグラフは1つ作成されています.)
ここで問題なのが,シートを移動した時,そのシートにあるユーザーフォームをHideさせ,移動先のシートで別のユーザーフォーム(この場合オブジェクト名などが異なるだけで実行内容は同じですが)をShowさせるということが可能なのは調べて分かったのですが,それは既存のシートに対してイベントプロシージャを設定しなければなりません.
今回,新規で作成したシートにユーザーフォーム,その実行内容のマクロ,そのシートにactivateプロシージャ及びdeactivateプロシージャ(ユーザーフォームをshow/hideするための),移動元シートにactivate/deactivateプロシージャをマクロAによって作成したいです.(新規シートはマクロAによって作成されているため,一括にしたいのです...)
マクロをマクロで記述することが可能なのは調べていてなんとなくわかったのですが,まだ理解不足なのでこちらも併せて,マクロによって新規で作成されるシートに対してユーザーフォームとマクロを設定する方法をご教授頂ければ幸いです.
< 使用 Excel:Excel2016、使用 OS:Windows10 >
(マナ) 2019/11/21(木) 18:56
>あるマクロ(仮にマクロAとします)の中にユーザーフォームが2つあります
ここで言っているマクロというのは、プロシージャのことですか? モジュールのことですか?
VBAProjectであれば「ユーザーフォームが中にある」というのは理解できるのですが・・
(渡辺ひかる) 2019/11/22(金) 09:46
了解しました
質問者さんがやりたいことをまとめると
最初に以下がある マクロA(プロシージャ) UserForm1 UserForm2
・UserForm1はマクロAから呼び出されUnload される ・マクロAは新規シート(シートBとします)を作成する ・マクロAはシートBにグラフを作成する ・UserForm2はシートBのグラフを操作する
・同様に作成される予定のシートC,D,E・・・がある
・シートBでグラフ操作のためにUserForm2を表示している状態で ・シートCに移動したとき、UserForm2をHideさせ、シートC用のUserForm2を表示させたい
そのトリガーとして シートCにシートイベントプロシージャを書かなければならない ただしシートCもマクロAで作成されたものなので、マクロAでシートCにシートイベントプロシージャを書きたい しかも シートCの追加と同時にシートC用のUserForm2が必要となる
ということでしょうかね
まずはシート毎のユーザーフォームというのは非効率だと思いますので 一つのユーザーフォームを使いまわすほうが良いと思います。
シート移動のイベントですが シートモジュールに書かずとも Thisworkbookモジュールに こんなイベントプロシージャを書けばイベントを捕まえられますよ
Private Sub Workbook_SheetActivate(ByVal Sh As Object) MsgBox Sh.Name & "がアクティブになりました" End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) MsgBox Sh.Name & "がアクティブでなくなりました" End Sub
(渡辺ひかる) 2019/11/22(金) 15:24
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.