VBA – 启用和禁用validation
我想问是否有一种方法来启用和禁用Excel的数据validation? 我想禁用某个input的validation,“其他”。 如果input不是其他的则启用它。
我有一个列表数据validation,当selectcell== others
,用户可以释放文本。 否则禁用自由文本。
我的列表validation是通过数据validation的Excel构build完成的,而不是使用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
现在,当select“其他”时,validation将被删除。 我如何启用它? 作为Selection.Validation.Delete
删除对象,我将能够启用它回来?
如果您想在相同的过程中使用它,请声明对象variables
Dim Valid As Validation
并在删除之前分配值。 在这里编辑。
If Cells(2, 6).Value = "Others" Then set Valid = Selection.Validation Selection.Validation.Delete
如果你想在其他程序中设置validation:
SomeRange.Validation = valid
我不知道你为什么要这样做,但这是你的问题的答案。 但是,如果要保留其他过程的validation,则可以这样做:
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
然后,如果您需要重新创buildvalidation,则只需从wsHid.Range(“A1”)和PasteSpecial Paste:xlPasteValidation中复制validation。 当然,这只是一堆想法,你应该把它调整到你的代码。
这正是我正在寻找的,当用户select其他,它会修改validation设置。 如果要删除validation,可以将修改更改为删除。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$F$2" Then If Target.Value = "Others" Then With Target.Validation .Delete .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _ :=xlBetween .IgnoreBlank = False .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End End If End If If Target.Address = "$F$2" Then With Target.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="1,2,3,Others" .IgnoreBlank = False .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End If End Sub
- VBA:如何显示一个错误消息就像标准的错误信息有一个“debugging”button?
- VBA运行时错误1004“对不起,我们可以find文件..”。 VBA通过一个文件夹循环编译所有的数据到一个Excel表单
- Excel VBA时间卡 – 时钟输出function出错
- Excel.Interop的Worksheet.UsedRange属性可能的错误?
- VBA Excel将Main Sub中的值链接到其调用的函数
- 在excel vba中获得唯一的值以及空string
- 将制表符分隔值(TSV)文件合并到Excel 2007(XLSX)电子表格中
- 只计算一个ID的一个值
- VLOOKUP,HLOOKUP,INDEX / MATCH或OFFSET?