プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (3件)

シートモジュールに下記を入れる。


A列をダブルクリックするとユーザーフォームが起動
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 1 Then Exit Sub
UserForm1.Show
End Sub
    • good
    • 5
この回答へのお礼

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

お礼日時:2008/05/04 16:34

厳密には「セルをクリックすればユーザーフォームが表示」させるイベントはありません。

その代わりに#01さんが書かれているダブルクリックイベント(BeforeDoubleClick)を使うか、#02さんのSelection_Changeイベントを使うことになります。ただしSelection_Changeイベントは矢印キーでアクティブセルを移動させてもイベントが発生しますから「マウスのクリック」に限定できません。

でもryunohitomiさんだけがそのブックを操作するならどちらの方法でもあまり気にする必要はないですが、もし他人にも操作をさせるなら「何もないセルをクリックすることが操作のきっかけになる」というGUI設計は、そのルールを知らないと操作できませんから好ましくないですね。

やはりシート上にコマンドボタンを配置して、明らかに「これをクリックすればよい」ことがわかる方が親切な設計ではないでしょうか。
もしシートが「スクロールするのでボタンが見えなくなる」というならウィンドゥ枠の固定を行って、スクロールしないエリアにボタンを配置すればよいと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/04 16:40

ユーザーフォームを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列の行範囲を限定もコードを変えると可能。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/04 16:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A