使用逗号分隔字符串的VBA范围验证|运行时错误' 1004'

时间:2014-11-07 23:52:59

标签: string excel vba validation excel-vba

我正在尝试使用VBA在整个单元格范围内创建数据验证。 我传入一个逗号分隔的字符串,该字符串派生自SQL查询。它抛出运行时错误'1004'acc是一个逗号分隔的字符串。字符串中没有VBA关键字,字符串正确,SQL查询正确。这发生在.Add行。

With equipRange.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:=acc
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

当我将查询限制为仅包含269个项目时,297中的工作正常。但是,当我点击270项时,它会抛出异常。我不认为它与内容有任何关系。

  • 268:HP - 电能
  • 269:HP - 离开水温
  • 270:METER - 电能
  • 271:METER - 电峰值功率

有人对正在发生的事情有任何想法吗?

修改
    我之前曾要求解决方法,但现在我想了解如何使用SQL查询填充列表。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我不认为,字符数量是限制或是错误的原因。您应该尝试创建逗号分隔字符串列表。 假设您的设备列表在A列中。然后,创建一个命名范围,如下所示,然后尝试添加数据验证列表。

检查以下示例代码:

Sub try()

ActiveWorkbook.Names.Add Name:="List", RefersTo:="=Sheet1!$A$1:$A$8000"
Range("C2").Validation.Delete
Range("C2").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=List"

End Sub