- ベストアンサー
ダブルクリックでエクセル起動
セルをダブルクリックしてマクロを起動させたいのですが。 B1セルをダブルクリックすると、 Sub 顧客名検索() ans = InputBox("顧客名を入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A1:G1").AutoFilter 'オートフィルタモードをセット .Range("A1:G1").AutoFilter Field:=2, Criteria1:="=*" & ans & "*" '2つ目のフィルターに検索文字 End With End Sub を実行させるようにしたいのです。 その方法で、C1、D1、E1、・・・も同様にしたいと思っています。 どなたか教えてください。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
回答番号:No.5 の補足を見ました。 同一シート(たとえばSheet1)のイベントとして、補足のようなコードを記述なさったのですか? Microsoft Visual Basic のヘルプ ------------------- 同じ適用範囲にある複数のオブジェクトに、同じ名前の要素がある可能性があります。 ------------------- 以下のようでは、ダメですか? Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$B$1" Then 顧客名検索 ElseIf Target.Address = "$C$1" Then フリガナ検索 ElseIf Target.Address = "$D$1" Then 住所検索 ElseIf Target.Address = "$E$1" Then 郵便番号検索 ElseIf Target.Address = "$F$1" Then 電話番号検索 ElseIf Target.Address = "$G$1" Then 備考欄検索 Else Exit Sub End If End Sub 的をはずしてたら、申し訳ございません。
その他の回答 (7)
B1~G1をダブルクリックしたときの処理は一緒ですか? もし、そうでしたら、以下ではいかがでしょうか? 以下の例は、B1~G1をダブルクリックしたときに、"ダブルクリックしました"と表示する。 A1と、H1以降(I1、J1....)をダブルクリックしたら、"指定列ではありません"と表示。 1行以外ををダブルクリックしたら、"指定行ではありません"と表示。 ------------------- d_c Cancel = True ------------------- のところに、必要な処理を指定してみて...いかがでしょうか? -------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim r As Long, c As Long r = ActiveCell.Row c = ActiveCell.Column If r = 1 Then If c > 1 And c < 8 Then d_c Cancel = True 'セルを編集可能にしてしまうのでキャンセル Else MsgBox "指定列ではありません" Cancel = True End If Else MsgBox "指定行ではありません" Cancel = True End If End Sub -------------------------------------- Sub d_c() MsgBox "ダブルクリックしました" End Sub B1、C1、D1、E1、F1、G1、それぞれをダブルクリックしたとき、それぞれで異なった処理を したいということであれば... web2525様がおっしゃってらっしゃるように、Target.Address を使用したほうがよいように思います。 If c = 2 Then 処理 ElseIf c = 3 Then 処理 ・ ・ ・ でもできますが...
お礼
回答ありがとうございます。 教えていただいたコード、ぜひ活用させていただきたいと思います。 ただ、もう少し勉強してからになりそうですが・・・。 今後も宜しくお願いします。 ありがとうございました。
- web2525
- ベストアンサー率42% (1219/2850)
>『コンパイルエラー >名前が適切ではありません:Worksheet_BeforeDoubleClick』 ワークシート内をダブルクリックした際に動作するマクロです、対象セルごとに同じ名前のマクロを作成していませんか? 基本のマクロの中でTarget.Address によって処理を変更するルーチンを作成してください。 If Target.Address = "$B$1" Then ・・・・ ElseIf Target.Address = "$C$1" Then ・・・・ とか Select Case などで。
お礼
回答ありがとうございました。 せっかく教えていただいたのに、内容を理解できず、NO.8さんの回答でやっと分かりました。 知識不足ですみませんでした。 またよろしくお願いします。
- marbin
- ベストアンサー率27% (636/2290)
B1セルは出来たということですのでモジュールの問題ではないですね。 失礼しました。 コードの方に問題がありそうです。 コード全体をアップできませんか?
補足
Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Target.Address = "$B$1" Then Exit Sub 顧客名検索 End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Target.Address = "$C$1" Then Exit Sub フリガナ検索 End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Target.Address = "$D$1" Then Exit Sub 住所検索 End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Target.Address = "$E$1" Then Exit Sub 郵便番号検索 End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Target.Address = "$F$1" Then Exit Sub 電話番号検索 End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Target.Address = "$G$1" Then Exit Sub 備考欄検索 End Sub というコードを書き込んでいます。
- marbin
- ベストアンサー率27% (636/2290)
>コンパイルエラー シートモジュールに記述していますか?
- kmmk16
- ベストアンサー率46% (32/69)
B1をダブルクリックした時、 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Target.Address = "$B$1" Then Exit Sub 処理 ・ ・ ・
補足
回答ありがとうございます。 B1セルは出来たのですが、同様にC1、D1というふうに作っていくと、 下記のエラーが出てきてしまいます。 『コンパイルエラー 名前が適切ではありません:Worksheet_BeforeDoubleClick』 どういう意味でしょう?
- marbin
- ベストアンサー率27% (636/2290)
Excel VBA 入門講座 ワークシートのイベントプロシージャ http://excelvba.pc-users.net/fol3/3_6.html
- marbin
- ベストアンサー率27% (636/2290)
シートモジュールの Worksheet_BeforeDoubleClickイベントを使ってはいかがでしょう?
補足
回答ありがとうございます。 実はこのイベントの使い方が分かりません。 コードなどを教えていただけると助かるのですが。 勉強不足ですみません。
お礼
ありがとうございます。 出来ました。 個別に書いてはだめだったんですね。 まだまだマクロの仕組みが分からず、迷惑掛けてすみません。 ありがとうございました。