|
▼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列にはドロップダウンリストが生成しませんでした。
|
|