|
▼悩める老人 さん:
>▼ichinose さん:
>>>アドバイスに従い試してみました。
>>>第1のセル(プルダウンリスト作成後)がブランクの時
>>> 第2のセルは a
>>>第1のセルで 甲 を 選択すると 第2のセルは A
>>>第1のセルで 乙 を 選択すると 第2のセルは a
>>>となります。
>>>第2のセルには A か a のみが入力されることになります。
>>
>>では、新規ブックにて(Sheet1,Sheet2というシートは、最低存在するブック)、
>>
>>標準モジュールに
>>
>>'==================================================
>>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
>>
>>上記のtestを実行してみてください。
>>
>>正常に終了すれば(すぐに終わります)、
>>
>>Sheet1の A1、B1にて試してみてください。
>>
>>正常に作動するようでしたら、A1,B1の入力規則を確認して下さい。
>
>
>ichinose 様:
>
>さっそくのアドバイスありがとうございます。
>module1に
>
>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
>
>を入力してこれを実行すると期待通りの挙動を示しました。
>
>ありがとうございました。
>
>これを活かして
>sheet1のA列に入力があるとB列にドロップダウンリスト生成
>B列での選定が終わるとC列にドロップダウンが生成(B列の選定の種類に依存)
>するようなコード作成のために
>
>sheet1のworksheetに
>下記のコード を入力し
>
>Option Explicit
>
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
> If Target.Column = 1 Then
> Cells(Target.Row, 1) = Date
> End If
>End Sub
>
>Private Sub Worksheet_Change(ByVal Target As Range)
> If Target.Column = 1 Then
> Cells(Target.Row, 2).Select
> ElseIf Target.Column = 2 Then
> Cells(Target.Row, 3).Select
> End If
>End Sub
>
>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> If Target.Column = 2 Then
> With Sheets("Sheet2")
> .Range("c1:c2").Value = [{"甲";"乙"}]
> With Cells(Target.Row, 2).Validation
> .Delete
> .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
> xlBetween, Formula1:="=indirect(""sheet2!c1:c2"")"
> End With
> End With
> ElseIf Target.Column = 3 Then
> With Sheets("Sheet2")
> .Range("a1:b5").Value = [{"a","f";"b","g";"c","h";"d","i";"e","j"}]
> With Cells(Target.Row, 2).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 If
>
>End Sub
>
>sheet1のA列をダブルクリックしたところ、B列には 甲、乙のドロップダウンリストが生成
>しかしながら このセル で 甲あるいは乙を選択しても C列にはドロップダウンリストが生成しませんでした。
ichinose様:
申し訳ありません。
追記です。
先のイベント駆動させたコードを実行すると
B列全体に 甲、乙 を選択するドロップダウンリストができました。
本来は該当行(列Aでダブルクリックした行)だけにドロップダウンリストを作成したいと思っています。
|
|