• ベストアンサー

ExcelVBAでセルをクリックしてユーザーフォームを表示するには

OfficeExcel2003を使用しています。 ユーザーフォームのテキストボックスやコンボボックスに文字や数値を入力し、OKボタンを押せばエクセルのセルに記入できるようにしようと思ってます。 フォームはなんとか(形だけですが..)作成できたのですが、そのフォームを呼び出す方法として、入力したい行のA列のセルをクリックすればユーザーフォームが表示されるようにしたいのです。 ネット上でいろいろ検索してみましたがなかなか見つけることができませんでした。 初歩的な質問かもわかりませんが、教えて頂けないでしょうか。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • suz83238
  • ベストアンサー率30% (197/656)
回答No.1

シートモジュールに下記を入れる。 A列をダブルクリックするとユーザーフォームが起動 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column <> 1 Then Exit Sub UserForm1.Show End Sub

ryunohitomi
質問者

お礼

ありがとうございました。 教えて頂いた方法でできました。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

厳密には「セルをクリックすればユーザーフォームが表示」させるイベントはありません。その代わりに#01さんが書かれているダブルクリックイベント(BeforeDoubleClick)を使うか、#02さんのSelection_Changeイベントを使うことになります。ただしSelection_Changeイベントは矢印キーでアクティブセルを移動させてもイベントが発生しますから「マウスのクリック」に限定できません。 でもryunohitomiさんだけがそのブックを操作するならどちらの方法でもあまり気にする必要はないですが、もし他人にも操作をさせるなら「何もないセルをクリックすることが操作のきっかけになる」というGUI設計は、そのルールを知らないと操作できませんから好ましくないですね。 やはりシート上にコマンドボタンを配置して、明らかに「これをクリックすればよい」ことがわかる方が親切な設計ではないでしょうか。 もしシートが「スクロールするのでボタンが見えなくなる」というならウィンドゥ枠の固定を行って、スクロールしないエリアにボタンを配置すればよいと思います。

ryunohitomi
質問者

お礼

ありがとうございます。 いろいろな方法があるのですね。 今回は私個人がほとんど使用するものですので、見た目がシンプルな方法で考えてました。 アドバイスありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

ユーザーフォームを1つ挿入します。VBE画面で。 (1)ユーザーフォーム (A)その上にテキストボックスを1つ貼り付けます(実際は複数個でも可。例題を簡単にするため) (B)またその上にテキストボックスを1つ貼り付けます(実際は複数個でも可) (C)コマンドボタンを1つ貼り付けます。入力完了通知用。 コンボのプロパティはRowSourceにF1:F3といれ、F1:F3のセルには 東京 名古屋 大阪 と入れておく。エクセル向きに書いたもの。プログラムからも設定できる。 ユーザーフォームはShowModalをFalseにしておく。 (2)イベント・プロシ (A)コマンドボタンのクリックイベントに Private Sub CommandButton1_Click() ActiveCell = UserForm1.TextBox1.Text ActiveCell.Offset(0, 1) = UserForm1.ComboBox1.Text '--- UserForm1.TextBox1.Text = "" UserForm1.ComboBox1.Text = "" UserForm1.Hide End Sub を作ります (B)別にシート(Sheet1)のelectionChangeイベントに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 Then UserForm1.Show End If End Sub ==== 操作について ー A列を選択 フォームが出る 氏名を入力、支店名を選択 コマンドボタンをクリック 値がクリックしていたセルのA列とB列にセットされる フォームが消える 以上繰り返し。 A列の行範囲を限定もコードを変えると可能。

ryunohitomi
質問者

お礼

ありがとうございました。 教えて頂いた方法でもできるようになりました。

関連するQ&A

  • ユーザーフォームについて

    エクセル2002です。 ユーザーフォーム内のテキストボックスを使用して、 (1)A1のセルに1と入力されている状態でマクロを起動した場合、 (2)ユーザーフォーム内のテキストボックスには2と表示される (3)ユーザーフォーム内のボタンを押すと、A2のセルに2と入力される。 このような流れで、A列のデータ最終行に番号をふっていきたいです。 (A列のデータ最終行がA30なら、A31に31と番号をふる) ユーザーフォームのテキストボックスとボタンは作ってあるのですが、 それぞれに入れるコードを教えていただけないでしょうか。 よろしくお願いします。

  • ユーザーフォームでセルを選択

    エクセルのVBAでユーザーフォームに数値を入力してセルを選択することは可能でしょうか? 例えば、列はAに固定していいのですが、ユーザーフォームに「123」と入力してボタンを押せば「A123」のセルがアクティブになるようなユーザーフォームを作成したいのですが方法がわかりません。 よろしくお願いします。

  • VBAのユーザーフォーム・・

    教えてください。 ユーザーフォームのテキストボックス・コンボボックスに入力した文字列をコマンドボタンを押したら、セルC1・B1に反映させたいのですが、できません。 このコマンドボタンには他のプログラムも入っており、同時にプログラムを実行したいのですが。

  • セルの値をユーザーフォームのテキストボックスに

    エクセルの質問です。 シート1にボタンを設置してユーザーフォームを呼び出すようにしています。 ユーザーフォームにテキストボックスを用意してて、シート1のセル(A1)に記入された数字を、ボタンを押した時に立ち上がったユーザーフォームのテキストボックスに表示されるようにしたいのですが、どうしたらいいのでしょうか?

  • EXCEL ユーザーフォームを使ったマクロ

    データの登録をするのにユーザーフォームを使おうと思うのですが、なかなかうまくいきません。教えてください。 ユーザーフォームにはコンボボックス、テキストボックス、コマンドボタンが貼り付けてあります。(コンボボックスのリストには呼び出したいシートの名前が入っています) コンボボックスのリストの中から呼び出したいシートを選択し、テキストボックスに入力した内容を、コマンドボタンを押すことで選択されたシート上の、あるセルに登録したいのですがどうすればよいでしょうか?

  • C# DataGridView特定セルの入力フォーム変更について

    C# DataGridView特定セルの入力フォーム変更について C# DataGridViewについての質問です。 DataGridViewで1列目のコンボボックスを選択した値によって、その行のみ 2列目の入力フォームを変更したいのですが、その様なことは可能でしょうか? 例.1行目1列目コンボボックス「a」選択時、1行目2列目コンボボックス表示   2行目1列目コンボボックス「b」選択時、2行目2列目テキストボックス表示   3行目1列目コンボボックス「c」選択時、3行目2列目チェックボックス表示 列全体の入力フォームを変更する処理なら分かるのですが、特定のセルのみ変更する 方法が分かりません。 もし可能であれば実現方法も教えて頂けると非常に助かります。 宜しくお願いします。

  • セルの値をテキストボックスに表示したい

    excelマクロ初心者です。教えてください。 <やりたいこと> 選択したセルと同じ行のうち特定の列のセルの値をフォームの テキストボックスに表示し、そのフォーム上で表示したテキスト ボックスの値をコマンドボタンでコピーしたい。 また、もうひとうつのコマンドボタンをおすと選択したセルと 同じ行の別のセルに"完了"と入力できるようにしたい。

  • 〔ExcelVBA〕ユーザーフォームテキスト

    ユーザーフォームから値の入力を受け付けるようにしています。 このとき、テキストボックスに入力された数値が3桁区切りで表示されるように出来ないでしょうか?数値を入力するボックスなので。 100万円以上の数値を入力するときに見づらくて困っています。

  • エクセル ユーザーフォームについて

    エクセル ユーザーフォームに関する質問です。 (1)ユーザーフォームを開くと同時に、あるテキストボックスに、その当日の日付が表示できるようにすることはできますか? (2)  A  B  C  D  E  1 名前 英語 数学 国語  2 青木  86 75 85 3 浅野  75 80 65 4 5  となっている場合に、E列のセルをクリックするとユーザーフォームが立ち上がるようにしたいのです。その際に、クリックしたセルが(E列,2行)でしたら、青木君の成績がユーザーフォーム上の各テキストボックスに表示され、また、(E列,18行)をクリックした場合には、18行目の鈴木君の成績が・・・というようにしたいのですが、わかりません。 ご親切な方がおりましたら、是非とも宜しくお願い致します。

  • ご教授願います。

    エクセルのVBA初心者です。 期限が迫っているので、どなたかご指導、ご教授願います。 ここまでの経緯を説明いたします。 ユーザーフォーム1 オプションコマンド1 オプションコマンド2 ↑(楕円の○をつけるため) コンボボックス1 ↑(記録先シートを指定するため) テキスト1 テキスト2 テキスト3 テキスト4 ↑(A列の空白行を検索語A列%行にテキスト1 B列%行にテキスト2・・・) コマンドボタン1 コマンドボタン2 ↑(完了ボタンとキャンセルボタン) このようにユーザーフォーム1を構成致しました。()内は希望プログラムです。 なお、このユーザーフォーム1はシート1上に作成致しました、コマンドボタンAによって呼び出されるようにしています。 またシート1にはオプションボタン1,2と同じ名前が書いてあるセル1,2があります。 このように構成したうえで、行いたいプログラミングは下記のようになります。 コマンドボタンAでユーザーフォーム1を呼び出します。 オプションコマンド1(又は2)にチェックをいれ、テキストボックス1~4まで記入します。 そしてコマンド1でhideを使って一度隠します。 hideでユーザーフォーム1を隠しはしますが、コマンドボタン1を押すと、オプションコマンド1を同じ名前のセルには楕円の○マークがでます。テキスト1~4はコンボボックスで指定したシート先のA行の空白セルにA列%行 B列%行 C列%行 D列%行に各々記入されます。%は空白行です。 また選択したコンボボックスの内容はシート1の指定セルに記入されるようにします。 このようにしたいのですが、どなたかご教授願います。 説明が至らない点、またわがままなお願いではございますが、何卒お願い致します。

専門家に質問してみよう