- ベストアンサー
EXCEL VBAでこんなことがしたい。(2)
EXCELの特定のセルを選択して、ダブルクリックすると フォームが現れて、別の情報を入力する、ということはできますか。 たとえばある人名が書いてあるセルを選択してダブルクリックすると フォームが現れて、性別、年齢、血液型を入力できる、とか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
はじめまして ツール→マクロ→VBEditorでVBEditorを開き、 挿入→ユーザーフォームで画面を追加して、 sheetのBeforeDoubleClickイベントを追加して、 先ほど作成したユーザーフォームをOpenすればよいと思います。
その他の回答 (2)
- merlionXX
- ベストアンサー率48% (1930/4007)
> テキストボックスの中に"=$a$1"とか表示されるのがちょっとうっとおしいですね それは、インプットボックスが表示されたあとからどこかのセルを選択したからそのアドレスが出ているのではないでしょうか。 セルを選択できないようにしました。↓ 入力した値がC列に表示されるのは前のとかわりません。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A1:A3")) Is Nothing Then Exit Sub Cancel = True Select Case Target.Address Case "$A$1" Range("C1") = InputBox("Sex?", "教えて?") Case "$A$2" Range("C2") = InputBox("Age?", "教えて?") Case "$A$3" Range("C3") = InputBox("Blood Type?", "教えて?") Case elese Exit Sub End Select End Sub
- merlionXX
- ベストアンサー率48% (1930/4007)
murano47さん、こんにちは。 さきほどの「EXCEL VBAでこんなことがしたい」にも別件の回答しておきましたよ。 さて、新たな質問ですが、ユーザーフォームを使わない方法もあります。 A1、A2、A3をクリックすると質問が現れます。 これは標準モジュールではなく、シートのモジュールに書いてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A1:A3")) Is Nothing Then Exit Sub Cancel = True Select Case Target.Address Case "$A$1" Range("C1") = Application.InputBox("Sex?", "教えて?") Case "$A$2" Range("C2") = Application.InputBox("Age?", "教えて?") Case "$A$3" Range("C3") = Application.InputBox("Blood Type?", "教えて?") Case elese Exit Sub End Select End Sub
お礼
ご回答ありがとうございます。 お手軽な方法ですが、テキストボックスの中に"=$a$1"とか表示されるのがちょっとうっとおしいですね。
お礼
ご回答ありがとうございます。 選択したセルに書かれた文字列が、フォーム上のラベルとかに表示されるといいのですが。