- ベストアンサー
エクセルのイベントで商品名を表示する方法
- エクセルで特定のセルをダブルクリックすると、別シートの表の中から対応する商品名を表示することができます。
- 具体的には、Sheet1のA4以下に商品番号が書き込まれ、Sheet1のC4以下をダブルクリックすると、そのセルに対応する商品名がSheet2の表から取得されて表示されます。
- Sheet2の表はデータが変化するため、VLOOKUP関数を使用して商品番号に対応する商品名を取得します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
A No.3です。 >Sheet1のシートモジュールには既にもうひとつのコードがあり 既存のWorksheet_BeforeDoubleClickがあるという事でしょうか? であれば、A No.3のコードの下記の部分で、Eventの起こるセル範囲を限定しておりますが、両方のコードを一つにまとめて、ダブルクリックしたセル位置に応じて処理を分岐する様にすれば良いでしょう。 If Not Intersect(Target, Sheets("Sheet1").Columns(3)) Is Nothing Then 'C列でWクリックしたときの処理 else '他の位置でWクリックしたときの処理 end if
その他の回答 (3)
- mitarashi
- ベストアンサー率59% (574/965)
A No.1さんに一票 検索する対象データの範囲はXL2000のヘルプから持ってきたままですので、修正下さい。コードに対応する商品名はSheet2のB列としてあります。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim findValue As Variant Dim c As Range If Not Intersect(Target, Sheets("Sheet1").Columns(3)) Is Nothing Then findValue = Target.Offset(0, -2).Value With Worksheets("Sheet2").Range("a1:a500") Set c = .Find(findValue, LookIn:=xlValues) If Not c Is Nothing Then Target.Value = c.Offset(0, 1).Value End If End With End If End Sub
お礼
ご回答ありがとうございました。うまくできました。 やはり難しいものです、自分にとっては。 ひとつずうずうしくも質問なのですが、Sheet1のシートモジュール には既にもうひとつのコードがあり、名前が適切ではありません、という内容のエラーがでます。これは回避できる問題でしょうか?
- pulsa
- ベストアンサー率57% (34/59)
すいません 何をされたいのかさっぱりイメージできません Vlookupであればこの辺が参考になるかと思います http://allabout.co.jp/computer/msexcel/closeup/CU20060805A/ セルのクリックやらシートでのイベントに関しては http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html Sheet2の動作はAutoFilterを使えば良さそうな感じです 質問を絞ってもう少し具体的に書くと良い様に思います 例えばセルの右クリックでシートを変えたい とか セルA1の値にしたがって、別なシートで同じ値のあるA列のみを表示したい など
- Masa2072
- ベストアンサー率51% (94/182)
> C4以下をダブルクリックするとA列に対応する商品名を表示する。(C4以下、行可変) SheetマクロのBeforeDoubleClickイベントにマクロを記述します。 ダブルクリックされたセルはTargetという変数に格納されます。 > 一度VLOKOOKUPで商品名を取り出す→値にする Findメソッドで最初に一致するセルをさがし、Offsetで幾つ右(または左)のセルを取得するといった方法がよいと思います。 > A2:J○→→行が変化する(表のデータが大くなったり変化します)のでそれに対応したい。 検索範囲を列全体にすれば行が増えても問題ありません。
お礼
ありがとうございました。最初どういうことか良くわからなかったのですが、やっと理解できました。このようにする必要があるのですね。勉強になりました。