|
まず、最初に投稿した下記のコードの意味を理解してください。
イベントモジュールに入れ込むのは、その後です。
本来は、最初の投稿の
>入力規則のリスト内容の変更自体は、VBAはなくてもできます。
を実現できなかった見たいだったので、入力規則だけで
別のセルの甲 乙の選択によって、当該セルのリスト内容を変えることができることを
VBAで実演したコードです。
20行程度のコードですから、1行1行何をしているのか理解してください。
そうすれば、
例えば、Sheet2に設定しているデータは、どこかのタイミングで
1度実行するか、予めVBAではなく、事前に設定するだけでよい事が
理解していただけるはずです。
>sheet1のA列をダブルクリックしたところ、B列には 甲、乙のドロップダウンリストが生成
>しかしながら このセル で 甲あるいは乙を選択しても C列にはドロップダウンリス
>トが生成しませんでした。
これも下記コードの入力規則を設定しているコードを良く調べてください。
特にどのセルの入力規則に元の値としてどんな数式を設定しているのか
その関係を良く見てください。
>本来は該当行(列Aでダブルクリックした行)だけにドロップダウンリストを作成したいと思っています。
でしたら、
>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
このイベント内で入力規則の設定をする仕様を改めることです。
上記のイベントは、どんなときに発生するのですか?
そのことを考えてみてください。
他のイベントもどのタイミングで発生するのか再度調べてください。
申し訳ありませんが、私は、そのまま使えるコードの提示は、
極力しない投稿をここのところ心がけていますので、
ご理解ください
>>>'==================================================
>>>Option Explicit
>>>Sub test()
>>> With Sheets("Sheet2")
>>> .Range("a1:b5").Value = [{"a","f";"b","g";"c","h";"d","i";"e","j"}]
>>> .Range("c1:c2").Value = [{"甲";"乙"}]
>>> With Range("a1").Validation
>>> .Delete
>>> .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
>>> xlBetween, Formula1:="=indirect(""sheet2!c1:c2"")"
>>> End With
>>> With Range("B1").Validation
>>> .Delete
>>> .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
>>> xlBetween, Formula1:= _
>>> "=if(a1=""甲"",indirect(""sheet2!a1:a5""),indirect(""sheet2!b1:b5""))"
>>> End With
>>> End With
>>>End Sub
|
|