添加数据validation的代码抛出没有错误,但也不起作用

我正在尝试使用VBA添加一个下拉列表,可以根据数组的大小在长度上有所不同。 我没有得到以下代码的错误,但它也不实际添加数据validation…

要形成清单:

Dim RegionList as String RegionList = "" For i = LBound(x) To UBound(x) RegionList = RegionList + x(i) & ", " Next 

要创buildvalidation:

 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 

编辑:我想下拉列表出现的特定单元格是不受保护的,所以关于保护表单的这一点可能是不相关的。

任何想法,将不胜感激!

当您的工作表受到保护时,您无法添加单元validationfunction。 即使你设置了参数userInterfaceOnly:=true它仍然是不允许的。

将validation添加到单元后,您需要移动保护代码 。 如果这还不够,您可以在设置validation之前临时取消保护表单,并在之后立即将其恢复。