人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルです。ユーザーフォームをシート別に表示させる方法を教えてください。

●質問者: nomo10
●カテゴリ:コンピュータ
✍キーワード:エクセル ユーザー
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● idetky
●0ポイント

シート別にユーザーフォームを作成して表示させれば?

http://yahoo.co.jp


2 ● SALINGER
●0ポイント

方法としては、ユーザーフォームを呼び出している部分があるはずですから、

共通のマクロからならば、シートごとにコマンドボタンを配置した異なるユーザーフォームを用意して

 Select Case ActiveSheet.Name
 Case "Sheet1"
 UserForm1.Show
 Case "Sheet2"
 UserForm2.Show
 Case "Sheet3"
 UserForm3.Show
 End Select

こんな感じで、アクティブになってるシート名を取得して、分岐させればいいです。


また、それぞれのユーザーフォームがほとんど同じで少しだけ変えたいという場合は、

UserformのInitializeイベントあたりに上記のような分岐で使わないコマンドボタンを非表示にするコードを

入れたりしてカスタマイズすればいいです。

http://excelvba.pc-users.net/fol9/9_3.html

◎質問者からの返答

すみません。どこに上のマクロを貼り付ければいいのですか?また、自動でそれぞれユーザーフォームを開きたいのですが…。


3 ● SALINGER
●100ポイント ベストアンサー

たぶん、過去の質問から推測すると、文字を入力するユーザーフォームはモードレスでシートを選択できるものだと思うので、

VBEの画面からシート全てに

Private Sub Worksheet_Activate()
 UserForm1.Show (vbModeless)
End Sub

Private Sub Worksheet_Deactivate()
 Unload UserForm1
End Sub

こんな感じで、アクティブになったときに表示、非アクティブになったら閉じるコードを書けばいいです。

UserForm1の部分は、各シートで使うユーザーフォームに変更してください。


貼り付ける場所がわからないときは、以下のサイトを参考に。

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html

◎質問者からの返答

何となくわかってきました。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ