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

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2008/09/15 13:08:09
  • 終了:2008/09/15 23:13:51

ベストアンサー

id:SALINGER No.3

SALINGER回答回数3454ベストアンサー獲得回数9692008/09/15 22:59:11

ポイント100pt

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

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

id:nomo10

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

2008/09/15 23:11:56

その他の回答(2件)

id:idetky No.1

idetky回答回数426ベストアンサー獲得回数202008/09/15 13:23:41

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

http://yahoo.co.jp

id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692008/09/15 14:51:16

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

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

    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

id:nomo10

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

2008/09/15 15:12:58
id:SALINGER No.3

SALINGER回答回数3454ベストアンサー獲得回数9692008/09/15 22:59:11ここでベストアンサー

ポイント100pt

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

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

id:nomo10

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

2008/09/15 23:11:56
  • id:nomo10
    シートごとに使うコマンドボタンの種類を変えたいという意味なのですが…。
  • id:SALINGER
    >すみません。どこに上のマクロを貼り付ければいいのですか?
    仕様がはっきりしていないので貼り付ければそのまま動くようなマクロは提示できません。

    まずはっきりさせておかなければいけないのは、ユーザーフォームが開くタイミングです。
    1 ショートカットなどでマクロが実行されたとき
    2 シート上のボタンが押されたとき
    3 シートがアクティブになったとき
    それぞれで、処理を書き込む場所が変わります。

    >また、自動でそれぞれユーザーフォームを開きたいのですが…。
    自動というのはシートがアクティブになったときにユーザーフォームが開くということでしょうか?
    その場合は、Worksheet_Activateイベントにユーザーフォームを表示するコードを書き込むことになります。
    http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_130_04.html

    次にはっきりさせないといけないのは、1つのユーザーフォームでボタンを変更するのか、ユーザーフォームごと変更するのか。
    前者の場合はユーザーフォームの仕様がわからなければどうしようもありません。
  • id:nomo10
    ユーザーフォームが開くタイミングはシートがアクティブになったときです。
    また、ユーザーフォームごと変更したいのです。
    初心者なのでよく説明できず、すみません。
    ユーザーフォームにしてもコマンドボタンのみの使用で、ワークシートごとに2種類のユーザーフォームで記号を打ち込みたいだけなのですが…。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません