Excel VBA – validation数据和逗号分隔的string

我试图纯粹用VBA创build数据validation单元格。 问题是,如果validation列表中的项目之一是包含逗号的Excel公式(例如以下代码中的IF()),则会生成错误。

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 

因为它在第一个逗号分隔string,所以产生了错误(运行时错误1004),所以validation的第一项是"=IF(SUM(A1:A2) = 0" 。我希望有转义字符(如C中的\)来避免这种情况,我想validation的列表如下所示:

 <result of IF() function> Item 2 Item 3 Item 4 

注意:我不能使用范围来validation数据。 如果用户删除了该电子表格将被破坏的范围。

在单元格A1或A2更改时,如何重置WorkSheet_Change事件以重置数据validation?

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim ValidationString As String Dim rngChanging As Excel.Range Dim rngWithValidation As Excel.Range Set rngChanging = Range("A1:A2") Set rngWithValidation = Range("B6") If Not Intersect(Target, rngChanging) Is Nothing Then With rngWithValidation .Validation.Delete If WorksheetFunction.Sum(rngChanging) = 0 Then ValidationString = "0" Else ValidationString = WorksheetFunction.Sum(rngChanging) End If ValidationString = ValidationString & ",Item2,Item3,Item4" .Validation.Add Type:=xlValidateList, Formula1:=ValidationString End With End If End Sub