我试图用VBA纯粹创建数据验证单元格。问题是,如果验证列表中的 项目之一是包含逗号的Excel公式(例如以下代码中的IF()),则会生成错误。产生Excel VBA - 验证数据和逗号分隔字符串
Dim str As String
str = "=IF(SUM(A1:A2) = 0, ""Zero"", SUM(A1:A2)) , Item 2 , Item 3 , Item 4"
s1.Range("B6").Validation.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=str
错误(运行时错误1004),因为它限定了串在第一逗号,所以确认的第一项是"=IF(SUM(A1:A2) = 0"
。我希望有逗号的转义字符(如C中的\)来避免这种情况。 我想验证列表中显示为这样:
<result of IF() function>
Item 2
Item 3
Item 4
注:我不能使用范围的验证数据。如果用户删除了该电子表格将被破坏的范围。
发布问题时,尽可能提供尽可能多的信息。产生的错误是什么?错误是否明确表明它存在转义字符问题或者是您的推理?请编辑答案以包含错误。 –
至少在Excel 2003中,我不相信你可以在验证中混合公式和列表。看看你是否可以做你想在Excel中完成的事情(也许在宏记录器上)。你可以扩展你的公式来测试其他项目,但是如果这很重要,你不会得到一个下拉框。 –
你可以使用一个范围,并将其放在一个xlveryhidden和锁定的工作表上,除非你的用户精通vba,他们甚至不会知道它的存在。 – scott