- ベストアンサー
ユーザーフォームを作成しました
- 自社の情報のユーザーフォームを作成しました。Sheet1にマクロボタンを配置しています。
- ユーザーフォームには自社の情報が表示されます。Sheet2に項目名と情報が入力されています。
- 現在、Sheet2で自社情報を閲覧していますが、Sheet1でフォーム表示したいと考えています。アドバイスをお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>自社の情報のユーザーフォームを作成しました。 とのことなので、フォームそのものや必要な各種コントロールの制御、各初期値の設定などはできているものと仮定します。 >Sheet2の画面で見るようになってます。 >マクロは~~ なので、その下にあるのが表示用のマクロと思われますが、シートとの間でのデータの受け渡しが見られませんがその辺は大丈夫でしょうか? 自社情報.Show がフォーム表示の実行文ですよね? 説明では「Sheet2の画面で見る」と書いてありますが、このマクロを実行すると「基本情報」というシートに表示が移ってしまいます。 ScreenUpdatingをFalseなどとしていない限り、「基本情報」のシートが表示されることになりSheet2から移動してしまいますね。 フォームの表示とシートの表示は別個に制御できますので、それぞれを指定して表示すれば可能となります。 常にsheet1を表示するのであれば、Sheets("Sheet1").Active などとしておけばいいのでは?
その他の回答 (1)
- fujillin
- ベストアンサー率61% (1594/2576)
#1です。どうも、話が行き違ってしまっているようですね。 ユーザーフォームは通常ユーザーとのインターフェースの為の入力フォームとしての利用が多いと思われます。 そのため、表示内容の初期値の設定や各コントロールの処理(ボタンを押した場合やテキストを入力した時の処理など)を事前にセッティングしておくことが必要です。また、その値がシート内の値と連動していたり、あるいはファイルを出力するなどの処理を伴うこともありますので、終了時の処理が必要な場合もあります。 「○○.show」は○○というフォームを表示するという命令なので、このようなフォームに関わるコーディングがすでに出来ているものとして回答いたしました。 Sheet1上でフォームを表示させたいのなら、Sheet1を表示させた状態で、該当するフォームをshowすればよいことになります。 ユーザーフォームについての基本的な情報は、エクセルのVBヘルプ「目次」-「Microsoft Forms リファレンス」をご一読ください。
お礼
ご指摘のように張り付けミスでした。 Sheets("基本情報").Selectでなく Sheets("Sheet2").Selectです。 シートとの間でのデータの受け渡しが見られませんが・・・ すみませんが 基本はどうしたらよいですか?