dポイントプレゼントキャンペーン実施中!

こんばんは
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

'-----------------------------------------------

などがが今の私ができる最大限の内容ですが、全く違うようです。
素人質問で大変申し訳ありません。
勘違いが多々あるかもしれませんが教えてください。
以上宜しくお願いいたします。

A 回答 (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

でどうでしょうか。
    • good
    • 3
この回答へのお礼

早速の回答ありがとうございました。
If Intersect(Target, Range("A:A")) Is Nothing Then
の方法は試したのですが一つの条件でしか実行できなかった為に
あきらめて他の方法を模索していました...............。
(イベントの書き方がおかしかったのかも...勉強不足です)

keirika さんの ”Not Intersect”で見事にできました。
次のステップに進めそうです。
本当にありがとうございました。

お礼日時:2008/06/25 23:01

TargetのColumnプロパティで列番号が取得可能ですよ


A列なら1、B列なら2、C列なら3になります

またダブルクリックイベントなので 複数のセル(列または行)が選択されているとは思えません
Intersectを使うまでも無いように思います
    • good
    • 0
この回答へのお礼

redfox63 さんありがとうございました。

”TargetのColumn プロパティ”ですね。
勉強してみます。

壁にブチあたったらまた質問させていただきます。
よろしくお願いします。

お礼日時:2008/06/26 22:20

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

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