我想问一下有没有办法在Excel上启用和禁用数据验证?我想禁用某些输入的验证,'其他'。如果输入不是其他输入,则启用它。
我有一个列表数据验证,当选项cell== others
时,用户可以释放文本。否则禁用自由文本。
我的列表验证是通过数据验证中的excel构建完成的,而不是使用VBA。
这是我尝试过的代码:
Sub Remove_Data_Validation_Selection()
Selection.Validation.Delete
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Cells(2, 6).Value = "Others" Then
Selection.Validation.Delete
Else
//Enable the validation
End If
End Sub
现在,当选择“其他”时,验证将被删除。我该如何启用它?当Selection.Validation.Delete
删除对象时,我能够将其启用吗?
答案 0 :(得分:2)
如果要在同一过程中使用它,请声明对象变量
Dim Valid As Validation
并在删除前指定值。在这里编辑。
If Cells(2, 6).Value = "Others" Then
set Valid = Selection.Validation
Selection.Validation.Delete
如果您想在其他程序中设置验证:
SomeRange.Validation = valid
我不知道你为什么会这样做,但这是你问题的答案。但是,如果要保留其他过程的验证,可以这样做:
Dim wsHid As Worksheet
Dim rngValid As Range
Set rngValid = Selection
Set wsHid = ThisWorkbook.Worksheets.Add
wsHid.Visible = xlSheetVeryHidden
rngValid.Copy
wsHid.Range("A1").PasteSpecial Paste:=xlPasteValidation
然后,如果您需要重新创建验证,只需从wsHid.Range(" A1")和PasteSpecial Paste:xlPasteValidation复制它。当然,这只是一堆想法,你应该根据你的代码进行调整。
答案 1 :(得分:1)
这正是我正在寻找的,当用户选择其他时,它将修改验证设置。如果要删除验证,可以将修改更改为删除。
isUnloaded()