
No.1ベストアンサー
- 回答日時:
VBAでそれぞれのsheetのイベントで
Private Sub Worksheet_Deactivate()
'そのシートのフォームを閉じる
End Sub
Private Sub Worksheet_Activate()
'そのシートのフォームを開く
End Sub
の様にすれば、簡単でわかりやすいかと思います。
sheetがアクティブになったかどうかは
workbookのイベントでもわかりますが、
その時は、シートの区別をつけないといけません。
場合によっては、その方がコードが少なくて済むかもしれません
早速のご回答ありがとうございます。基本を知らないまま、今まで作業してきたので、sheetイベントを設定するということがようやくわかり、とても嬉しいです。
ところで、今まで標準モジュールにすべてを記述していたのですが、単独のシートで納まるものであれば、sheetイベントに移し変えた方が良いのでしょうか?
No.6
- 回答日時:
#2です。
私は
>ただFormを閉じないと、シートが選択できないので
不完全かも知れません。
と書きました。
この問題が#3さんの
>各UserFormのプロパティーのShowModalをFalseに設定してください
を解決し様とするものです。実際やって見れば判ります。
>「UserFormのプロパティーのShowModalをFalseに」というのは、どのような事のためにでしょうか?Hideとの関連ですか?と#3でお礼に書いておられたので。
●#2のお礼の
>標準モジュールに記述するのとWorksheetイベントに記述するのとは、どのように分けて考えるものなのでしょうか?
(1)標準モジュール
実行は、実行する人の実行起動により実行される。
ただ(2)の中にも組み入れられる。
(2)イベントプロセジュアー
イベントという、「クリックなどマウスの動作」や「マウスの動作によって引き起こされる(例 フォームが読みこまれるなど)事象」や時間経過などをキッカケとして動作する。キーボード入力関連のキッカケもある。実はOSに通知(ウインドウズメッセージ)が行っているすべてのコンピュタ関連の事象うち、代表的な一部をVBAプログラマに開放・提供している。
No.5
- 回答日時:
>今まで標準モジュールにすべてを記述していたのですが…
それぞれのイベント毎にコードを記述するとコードが分散し見通しが悪くなるというデメリットがありますが
そのイベントで処理する部分はそのイベント部分で書いた方がいいと思います。
全体で共通的に使用できる部分は、
手続きや関数として、標準モジュールに書いておくのがいいと思います。
もちろん、標準モジュールに全部書いてもかまいません。
その分割度合いは、「好み」だと思います。
ただ、
シートのグローバル部分に書くのは、いいですが、
シートのイベント部分に何もかも(必要のない部分まで?<変な言い方ですね)書くのはいただけないと思います。イベントの起こる頻度にもよると思いますが。
No.3
- 回答日時:
シート1のイベントにたとえば
Private Sub Worksheet_Activate()
UserForm1.Show
End Sub
Private Sub Worksheet_Deactivate()
UserForm1.Hide
End Sub
とするとShhet1がアクティブになったとき
UserForm1が開き
Shhet1が非アクティブになったとき
UserForm1が閉じる
各シートイベントに記入すればよいと思います
ただ各UserFormのプロパティーのShowModalをFalseに設定してください
ありがとうございます。
「UserFormのプロパティーのShowModalをFalseに」というのは、どのような事のためにでしょうか?Hideとの関連ですか?それともほかの・・・
No.2
- 回答日時:
ThisWorkbookのイベントに
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Select Case Sh.Name
Case "Sheet1"
MsgBox "Sheet1"
UserForm1.Show
Case "aaa"
MsgBox "aaa"
UserForm2.Show
Case "Sheet3"
MsgBox "Sheet3"
UserForm3.Show
End Select
End Sub
を作ってみました。
ご参考に。
ただFormを閉じないと、シートが選択できないので
不完全かも知れません。
ありがとうございます。なるほど、こういう方法もあるのですね。今後に活用できそうです。ところで、標準モジュールに記述するのとWorksheetイベントに記述するのとは、どのように分けて考えるものなのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
-
4
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
5
エクセルファイルを開く時、常に同じシートから開くようにするには?
Windows Vista・XP
-
6
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
9
VBA(エクセル)のユーザーフォームの固定
Visual Basic(VBA)
-
10
UserForm1.Showでエラーになります。
工学
-
11
Excel VBA ユーザーフォーム 複数のユーザーフォームの閉じ方。
Visual Basic(VBA)
-
12
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
13
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
14
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
15
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
16
VBA Shapes コピーと名前
Excel(エクセル)
-
17
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
18
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
19
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
-
20
エクセルで空白セルを含む列の最終行の値を取得する式を教えてください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
建築模型、カーブの作り方
-
フォルツァ バッテリーを外して...
-
プリメーラ(P10)の"Tm""Te""...
-
磁石のくっつくパネルを作りた...
-
台車の下に敷くシートについて
-
エスティマのコンソールボック...
-
介護職です。目標管理シート提...
-
エクセルのシートをめくる
-
原付 レッツシート開け方
-
鏡の作り方
-
IHクッキングヒーターの操作パ...
-
【マクロ】シートの変数へ入れ...
-
ネガフィルムの材質って何ですか?
-
日産キューブのシートを交換したい
-
リアシート無しで運転してたら...
-
XJR400Rのシートについて
-
エクセルで納品書を別シートで...
-
Excel複数シートから日付と文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
IHクッキングヒーターの操作パ...
-
フォルツァ バッテリーを外して...
-
エクセルVBA 4行飛ばしで転記す...
-
シートベルトの固定解除
-
Excel複数シートから日付と文字...
-
【マクロ】シートの変数へ入れ...
-
Vba Array関数について教えてく...
-
原付 レッツシート開け方
-
BRIDEのシート張り替えってでき...
-
ポップコーンの捨て方
-
建築模型、カーブの作り方
-
水の染み込んだバイクのシート...
-
XR250BAJAのシートのはずし方を...
-
癒着してしまったテレビの液晶...
-
カッティングシートの上からア...
-
プリメーラ(P10)の"Tm""Te""...
-
PowerQuery(パワークエリ)のエ...
-
マジェスティ(4HC)のシート下...
おすすめ情報