使用Excel VBA创建数据验证列表时遇1004错误求解决
解决VBA生成数据验证列表的1004错误
你的代码触发1004错误主要是三个问题导致的,逐个修正就能解决:
- 函数名称不符合VBA规则:VBA调用Excel公式必须用英文函数名,和Excel界面语言无关。把代码里的葡萄牙语函数
DESLOC改成英文OFFSET,CONT.SE改成COUNTA。 - 多余的Operator参数:数据验证的
xlValidateList类型不需要Operator:=xlBetween这个参数,添加它会引发错误,直接删除即可。 - 公式格式校验:你当前的引号转义是正确的,无需额外调整。
修正后的完整代码:
Sub MyVBAList() With Selection.Validation .Delete .Add _ Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Formula1:="=OFFSET($A$2,0,0,COUNTA($A$2:$A$100),1)" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End Sub
补充说明:
OFFSET($A$2,0,0,COUNTA($A$2:$A$100),1)的作用是动态引用A2到A列最后一个非空单元格的区域,作为下拉列表的数据源。- 如果你的Excel版本支持动态数组,也可以改用
=FILTER($A$2:$A$100,$A$2:$A$100<>""),能自动过滤空值,无需依赖COUNTA计算行数。
内容的提问来源于stack exchange,提问作者Robson Curvello
相关产品推荐
相关产品推荐

