- ベストアンサー
ダブルクリック 条件 分岐
こんばんは VBAの勉強をはじめたばかりの素人です。 いろいろ調べたのですが自分の学習不足もあってかなかなか 回答に結びつかなかったので質問させてください。 シートの("A:A")をダブルクリックしたらフォーム1を表示する シートの("B:B")をダブルクリックしたらフォーム2を表示する シートの("C:C")をダブルクリックしたらフォーム3を表示する といった簡単なイベントなのですがうまくできません。 '----------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If ActiveCell.Address = ("A:A") Then 1.Show ElseIf ActiveCell.Address = ("B:B") Then 2.Show ElseIf ActiveCell.Address = ("C:C") Then 3.Show End If End Sub '----------------------------------------------- 又は '----------------------------------------------- Private Sub Workbook_Open() ActiveWorkbook.Worksheets("Sheet1").OnDoubleClick = "Test" End Sub Public Sub Test() A列 = 1 B列 = 2 C列 = 3 現在位置列 = ActiveCell.Column 現在位置行 = ActiveCell.Row Select Case ActiveCell.Address Case 現在位置列 = A列 1.Show Case 現在位置列 = B列 2.Show Case 現在位置列 = C列 3.Show End Select End Sub '----------------------------------------------- などがが今の私ができる最大限の内容ですが、全く違うようです。 素人質問で大変申し訳ありません。 勘違いが多々あるかもしれませんが教えてください。 以上宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Range("a:a"), Target) Is Nothing Then UserForm1.Show End If If Not Intersect(Range("b:b"), Target) Is Nothing Then UserForm2.Show End If If Not Intersect(Range("c:c"), Target) Is Nothing Then UserForm3.Show End If End Sub でどうでしょうか。
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
TargetのColumnプロパティで列番号が取得可能ですよ A列なら1、B列なら2、C列なら3になります またダブルクリックイベントなので 複数のセル(列または行)が選択されているとは思えません Intersectを使うまでも無いように思います
お礼
redfox63 さんありがとうございました。 ”TargetのColumn プロパティ”ですね。 勉強してみます。 壁にブチあたったらまた質問させていただきます。 よろしくお願いします。
お礼
早速の回答ありがとうございました。 If Intersect(Target, Range("A:A")) Is Nothing Then の方法は試したのですが一つの条件でしか実行できなかった為に あきらめて他の方法を模索していました...............。 (イベントの書き方がおかしかったのかも...勉強不足です) keirika さんの ”Not Intersect”で見事にできました。 次のステップに進めそうです。 本当にありがとうございました。