複数階層のドロップダウンリストの使用一連のユーザー選択を作成しました。ユーザーは左側の最初のリストから選択します。次に、最初の選択「役割」に応じて、ユーザーは「グループ」を選択できます。最後の「アイテム」の選択は「グループ」に基づきます。
ただし、ユーザーはその後戻って、以前選択した「アイテム」と一致しない別の「ロール」または「グループ」を選択できます。
ユーザーに警告する仕組みはありますかすぐにこの誤ったデータを入力したのでしょうか?
無効なデータを「丸で囲む」ことができることは知っていますが、それを行うには、ユーザーが自分で確認し、そのたびに更新する必要があるようです。変更のたびにこれをトリガーできれば完璧です。
答え1
Sheet2にデータ検証リストを設定し、 に最初のデータ検証を設定したとします。 で選択された内容に基づいてSheet1!A2
の検証を変更したいとします。このコードを に配置します。Sheet1!B2
Sheet1!A2
Sheet1 のワークシート モジュール:
コード
Sub worksheet_change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
If Target.Value = "one" Then
With Range("B2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Sheet2!B1:B2"
End With
End If
If Target.Value = "two" Then
With Range("B2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Sheet2!B3:B4"
End With
End If
If Target.Value = "three" Then
With Range("B2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Sheet2!B5:B6"
End With
End If
End If
End Sub
if
次に、検証を追加する追加リストごとに追加のステートメントを設定します。
説明
基本的に、これはワークシートに変更があった場合、それがどこにあり、値が含まれているかを確認することを意味しますA2
。この値はデータ検証シート内にのみ存在します。したがって、これらのことが当てはまる場合は次のようになります。
B2
それぞれの可能な値を確認し、参照されているデータ検証リストで定義されている可能性にデータ検証を設定します。
データに合わせて可能性を広げ、追加のリストに追加の層を追加します。