我在Excel中有4个下拉菜单,读取相同的范围。
我使用了'数据验证'中的下拉菜单。
我想删除/隐藏已在其他下拉菜单中选择的选项(即其他3)。当然,如果用户改变了对某个选择的想法,我希望选项/选择重新出现在每个下拉菜单中。
我曾试图谷歌,但我没有太多运气。
谢谢。
答案 0 :(得分:0)
有这个样本:
使用名为DataVal1的验证范围(来自E4:E10),使用以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LstVal(1 To 10) As String
Dim Tmp(1 To 10)
Dim Coll As New Collection
Dim Vali As Integer
Dim i, x As Integer
Dim DropLst
Dim Dval
Dim xx
Dim SRange As String
SRange = "B4:B8"
Vali = 1
For Each DropLst In Range(SRange)
Set Coll = Nothing
For Each Dval In Range("DataVal1")
Coll.Add Dval.Value
Next
For Each xx In Range(SRange)
If DropLst.Address = xx.Address Then GoTo ENext
For x = 1 To Coll.Count
If Coll(x) = xx.Value Then
Coll.Remove (x)
GoTo ENext
End If
Next
ENext:
Next
Tmp(Vali) = ""
For i = 1 To Coll.Count
If (Tmp(Vali) <> "") Then Tmp(Vali) = Tmp(Vali) & "," & Coll(i)
If (Tmp(Vali) = "") Then Tmp(Vali) = Tmp(Vali) & Coll(i)
Next
With DropLst.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Tmp(Vali)
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Vali = Vali + 1
Next
End Sub
当您更改一个下拉列表的验证时,另一个下载将使用新的动态列表进行验证
使用此代码,您可以添加所需的验证数量,更改SRange范围...
如果您希望验证单元格不在附近,则需要编写一些代码...