我正在尝试使用VBA创建数据验证单元。问题是,如果其中之一 验证列表中的项目是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
生成错误(运行时错误1004),因为它在第一个逗号处分隔字符串,因此验证的第一项是"=IF(SUM(A1:A2) = 0"
。我希望逗号中有转义字符(例如\ C中的\)以避免这种情况。
我希望验证列表显示为:
<result of IF() function>
Item 2
Item 3
Item 4
注意:我不能对验证数据使用范围。如果用户删除了范围,电子表格就会被破坏。
答案 0 :(得分:0)
当单元格A1或A2更改时,WorkSheet_Change事件如何重置数据验证?
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