- 締切済み
ユーザーフォームのHide,showメソッド
ExcelのVBAでユーザーフォームをHideメソッドで非表示にして、 showで再表示すれば、状態が保存されたまま表示されるはずですが、 ユーザーフォーム表示中またはHideメソッドで隠した後に コマンドボタン等が配置されたシートを削除したときは、showで再表示しても、 ユーザーフォームの状態が保存されていません。 これはどうしてでしょうか? また解決策等ありましたら、教えてください。
- 50000
- お礼率47% (22/46)
- Visual Basic
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hige_082
- ベストアンサー率50% (379/747)
どうやっても、症状が再現しません 非表示の、コード、手順の詳細があれば、分かるかもしれない 回避策は、セルや変数に値を保存するぐらいしかないね
- hige_082
- ベストアンサー率50% (379/747)
userformのtextbox、listBox、comboBoxなどの値が消えるのかな プロパティのControlSourceにセルを設定していませんか だとしたら、ControlSourceはセルにリンクを張るだけなので リンク先があるシートが削除されれば値は消えます 値を保持するなら、どこかで意識的に値をvalueに代入しなければいけません 一例 'ボタンを押したら Private Sub CommandButton1_Click() TextBox1.Value = ActiveSheet.Range("a2").Value End Sub 'userformを表示する時 Private Sub UserForm_Initialize() TextBox1.Value = ActiveSheet.Range("a1").Value End Sub 外したら、無視して
関連するQ&A
- [ExcelVBA] Application.Dialogs(xlDialogPrint).Show とユーザーフォームについて
[環境] WinXpHomeSP2 Excel2002SP3 Excelのユーザーフォーム上にあるコマンドボタンをクリックすると、アクティブになっているシートを印刷するプログラムを作成しています。 印刷前に印刷ダイアログを表示し、プリンタの設定およびプレビューを可能にしたいため、 Application.Dialogs(xlDialogPrint).Show を使用しています。 ユーザーフォームはその直前でいったんHideし、上記コードの直後に再度Showしています。 表示された印刷ダイアログの「プレビュー」ボタンをクリックすると、Hideしたはずのユーザーフォームがプレビュー画面の前面に表示されてしまい、プレビュー画面、ユーザーフォーム画面のどちらのボタンも効かなくなって制御不能となってしまいます。 プレビューしてもユーザーフォームが立ち上がってこなくなる方法を教えてください。
- ベストアンサー
- Visual Basic
- Showメソッド
VBA初心者です。 ユーザーフォームから他のユーザーフォームにボタンで移動するのに、 オブジェクト名.show で、移動しません。移動できたのとできなかったのがあるので、ユーザーフォームの設定が違うのでしょうか?エラーは、 「メソッドまたはデータメンバが見つかりません。」 で、「.show」にラインが入っていました。
- ベストアンサー
- Visual Basic
- ユーザーフォームが表示前にエラーになります。
お世話になります。 Excelのシート上にコマンドボタンを配置して それをクリックするとユーザーフォームが表示されるようにしたいのですが、下記のコードだと「フォーカスがありません」と1行目でエラーで止まってしまいます。 解決方法を教えてください。 Private Sub コマンドボタン_Click() ユーザーフォーム.Show End Sub よろしくお願いします!
- ベストアンサー
- その他(プログラミング・開発)
- エクセルのユーザーフォームの作り方で
エクセルのVBAの初歩的なことで教えてください。小学生の子供用の学習ソフトを試作しています。シート1を問題の表示画面とし、シート2に問題のデータを保存しています。学習者はシート1を見て、最初に名前や使った日をユーザーフォームに入力すると、そのデータがシート1の表示されていない下の方のセルに記録されるようにマクロを組んで作りました。そのユーザーフォームを、シート1に作ったコマンドボタン(テキストは「開始」としました)を押すと表示されるようにしたいのです。そのためのコマンドボタンをどのように作ればよいでしょうか。ユーザーフォームの方は、マクロを実行すれば立ち上がり正常に入力(登録)できます。VBAの本を読んで独学で勉強し始めたばかりですので、できればわかりやすく教えてください。
- ベストアンサー
- その他MS Office製品
- 複数のユーザーフォームをコマンドボタンにて表示・非表示させるには
VBA勉強中のものです。 複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。 例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、 コマンドボタン1→ユーザーフォーム1を表示 コマンドボタン2→ユーザーフォーム2を表示 コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。 そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。 どなたか、どのようにしたらいいかご教授ねがいます。 サンプルコード) --------------------------------------------------- 'UserForm1のコード Private Sub CommandButton2_Click() Call UserForm2_show UserForm1.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm1.Hide End Sub ---------------------------------------------------- 'UserForm2のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm2.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm2.Hide End Sub ------------------------------------------------------- 'UserForm3のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm3.Hide End Sub Private Sub CommandButton2_Click() Call UserForm2_show UserForm3.Hide End Sub ------------------------------------------------------------ '標準モジュール コード Sub UserForm1_show() UserForm1.Show End Sub Sub UserForm2_show() UserForm2.Show End Sub Sub UserForm3_show() UserForm3.Show End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルのユーザーフォームについて
現在、ワークシートの内容を見やすくするためにユーザーフォームを使用し表示させています。印刷は、ユーザーフォームにコマンドボタンを配置し、ワークシートを印刷しています。 せっかくユーザーフォームで見やすいレイアウトにしているので、表示させた内容をユーザーフォームごと印刷できればと考えています。 画面のハードコピーとかではなくて、コマンドボタンをクリックすることで印刷したいのですが、どなたか教えてください。
- ベストアンサー
- オフィス系ソフト
- エクセルのユーザーフォームについて
エクセルのユーザーフォームについて教えてください。 ユーザーフォームにてメニュー画面を作成しました。 ユーザーはメニューからの操作だけでエクセルシートを作成できるようなマクロをつくりました。 ユーザーフォームのコマンドボタンでEXCELを終了させることはできますか? VBAの記述方法も教えてください。
- ベストアンサー
- オフィス系ソフト
- VBAでのユーザーフォームの使い方
VBAのマクロでユーザフォームにボタンを配して、それによってエクセルシートのデータを更新するようなマクロを作りたいのですが、ユーザフォームの挿入でボタン配置まではできるのですけど、どのようにリンク付けするのかコーディング等、解りません。お教え下さい。簡単なサンプルコーディングがあれば助かります。
- ベストアンサー
- オフィス系ソフト
補足
TextBox1.Value = ActiveSheet.Range("a2").Value この例のようにValueに代入していますし、削除するシートもフォームに代入 するデータがあるシートとは別のシートです。