我正在尝试使用VBA添加一个下拉列表,该列表的长度可能会有所不同,具体取决于数组的大小。我没有收到以下代码的错误,但它实际上也没有添加数据验证...
要形成列表:
Dim RegionList as String
RegionList = ""
For i = LBound(x) To UBound(x)
RegionList = RegionList + x(i) & ", "
Next
创建验证:
RegionList = Left(RegionList, Len(RegionList) - 2) 'Remove trailing Comma/Space
With Sheet2.Range("C1").Validation 'Insert dropdown to cell C1
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=RegionList
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
我应该注意,在使用以下公式运行此代码之前,工作表是受保护的:
Sheet2.Protect Password="xxx", DrawingObjects = False, UserInterfaceOnly = True
编辑:我想要显示下拉列表的特定单元格是不受保护的,因此关于保护工作表的位可能无关紧要。
任何想法都将不胜感激!
答案 0 :(得分:3)
当工作表受到保护时,您无法添加单元格验证功能。即使您设置参数userInterfaceOnly:=true
,仍然不允许。
在向单元格添加验证后,您需要移动保护代码。如果还不够,您可以在设置验证之前暂时取消保护,然后立即将其重新设置。