|
▼悩める老人 さん:
>▼ichinose さん:
>>まず、最初に投稿した下記のコードの意味を理解してください。
>>イベントモジュールに入れ込むのは、その後です。
>>本来は、最初の投稿の
>>>入力規則のリスト内容の変更自体は、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
>
>ichinose 様
>
>アドバイスありがとうございました。
>じっくり検討させていただきます。
>時間が多少掛かるかもしれませんが
>宜しくお願いします。
ichinose様
申し訳ありません。
追加です。
気にはなっていましたが、
With Range("a1").Validation
With Range("B1").Validation
では コード上、sheet1 を指定してませんが
これで 何故 sheet1の
セルA1およびセルB1の入力規制の削除、設定が
できるのでしょうか。
この設定するシートがもしsheet3だった場合、
どうなるのでしょうか。
|
|