- ベストアンサー
ユーザーフォームをWorksheet上で表示
- ワンクリックでユーザーフォームを表示する方法としてWorksheet上にボタンを作成する
- Excel2013でユーザーフォームを表示するための具体的なコードの記述
- ユーザーフォームの保存先は「Sheet1」のA1からA5まで
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >WorksheetのセルA1(名前を記述してある)をクリックするだけでユーザーフォームを表示する こういうことでしょうか? '//シートモジュールに貼り付けてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address(0, 0) = "A1" Then UserForm1.Show vbModeless '必要に応じて、UserFormのオブジェクト名を換えてください。 End If End Sub 'おまけ。A1右クリックで、ユーザーフォームをアンロード Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True If Target.Address(0, 0) = "A1" Then If UserForms.Count > 0 Then Unload UserForm1 '必要に応じて、UserFormのオブジェクト名を換えてください。 End If End If End Sub '//
その他の回答 (2)
- WindFaller
- ベストアンサー率57% (465/803)
こんにちは。 言葉で伝えるのは難しいですね。 >シート・タブを右クリックして、メニューの中の「コードの表示」で表示されるモジュールの中に > >Private Sub UserForm_Click() > Myform.Show vbModeless > End Sub 少なくとも、このプログラムは、生きていないはずです。 このプログラムは、UserFormモジュール上で動くものですが、UserFormが二つないと、コードの論理的な矛盾があります。 >これは、UserForm1 の部分を Myform に変更すればいいということでしょうか? 違います。 Myformが、UserFormのオブジェクト名なら、以下のようにするということです。 以下が、イベント・ドリブン型のプログラムです。 これを、シートモジュールに貼り付けてください、ということです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address(0, 0) = "A1" Then Myform.Show vbModeless End If End Sub
- WindFaller
- ベストアンサー率57% (465/803)
こんにちは。 >自分が設定しているオブジェクト名に変更してシートモジュールに貼り付けて、WorksheetのA1をクリックしてもユーザーフォームが表示されません。 その場合は、起動していたコマンド・ボタンがありますよね。 その起動した中のコードをそっくり、*の部分に置き換えればよいです。 If Target.Address(0, 0) = "A1" Then '*UserForm1.Show vbModeless '必要に応じて、UserFormのオブジェクト名を換えてください。 End If 他に思い当たる所というと、「'//シートモジュールに貼り付けてください。」というのは、 そのデータのあるシートのシート・タブを右クリックして、メニューの中の「コードの表示」で出てきたモジュールのことです。今の所、コマンド・ボタンで起動できるかぎりは、思い当たる場所がありません。 試してみてください。
補足
再度の回答ありがとうございます。 確認のためお聞きします。 >その場合は、起動していたコマンド・ボタンがありますよね。 このコマンドボタンというのは、今使っている、ボタンからユーザーフォームを表示させるボタンの事ですね。 このボタンのマクロは、「開発」→「マクロ」の画面で表示される マクロ名は ShowUserForm で、「編集」クリックで表示されるのは Sub ShowUserForm() Myform.Show vbModeless End Sub となっています。 また、シート・タブを右クリックして、メニューの中の「コードの表示」で表示されるモジュールの中に Private Sub UserForm_Click() Myform.Show vbModeless End Sub という記述があります。 >'*UserForm1.Show vbModeless '必要に応じて、UserFormのオブジェクト名を換えてください。 これは、UserForm1 の部分を Myform に変更すればいいということでしょうか? Myform と変更してもA1のクリックでユーザーフォームは表示しません。 また、「コードの表示」で表示される記述の順番、削除しなければならない記述はありますか? よろしくお願いします。
補足
回答ありがとうございます。 >UserForm1.Show vbModeless '必要に応じて、UserFormのオブジェクト名を換えてください。 自分が設定しているオブジェクト名に変更してシートモジュールに貼り付けて、WorksheetのA1をクリックしてもユーザーフォームが表示されません。 私の設定の仕方が間違っているのでしょうか? よろしくお願いします。