ここから本文です

エクセルについて質問です。 よろしくお願いします。

hig********さん

2012/9/1815:31:41

エクセルについて質問です。
よろしくお願いします。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("BA4")) Is Nothing Then
Call Vlookup関数
End If
Cancel = True
End sub

BA4のセルをダブルクリックしたときはVlookup関数のマクロ
BA5のセルをダブルクリックしたときはVlookup関数2のマクロ
BA6のセルをダブルクリックしたときはVlookup関数3のマクロ
という風にBA4~BA323までのセルをダブルクリックしたときそれぞれ違うマクロを
動かすには上をどう書き換えればできますか。

閲覧数:
1,350
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

riv********さん

編集あり2012/9/1816:28:48

この質問に回答することはできます。
しかし似たような関数が320個も作るというプログラムの構造自体に問題があります。

前回の質問を読んでみました。
関数を呼ぶときに値を渡すことで回避できそうです。
前回の質問より
Sub Vlookup関数()
Dim 商品名 As String
名前 = Application.WorksheetFunction.VLookup(Range("A1"), Range("A2:C5"), 2, 0)
点数 = Application.WorksheetFunction.VLookup(Range("A1"), Range("A2:C5"), 3, 0)
MsgBox 名前 & vbCrLf & "期末の点数 " & 点数 & "点" & vbCrLf & "中間の点数 " & 点数 & "点" & vbCrLf & "実力の点数 " & 点数 & "点"
End Sub

まずこっちのほうを改造してしまいます。
Sub Vlookup関数(IX as long)
Dim 商品名 As String
名前 = Application.WorksheetFunction.VLookup(Range("A" & IX), Range("A2:C5"), 2, 0)
点数 = Application.WorksheetFunction.VLookup(Range("A" & IX), Range("A2:C5"), 3, 0)
MsgBox 名前 & vbCrLf & "期末の点数 " & 点数 & "点" & vbCrLf & "中間の点数 " & 点数 & "点" & vbCrLf & "実力の点数 " & 点数 & "点"
End Sub
次に
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 53 And Target.Row <= 323 Then
Call Vlookup関数(Target.Row - 3)
Else
Cancel = True
End Sub
とすれば解決そうですね。

質問した人からのコメント

2012/9/18 16:51:31

感謝 ありがとうございました。
ずっと悩んでいたものがやっとできました。
質問の仕方が悪くてすいませんでした。
ほんとうにありがとうございました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる