在vb.net中动态添加和删除数据验证

在vb.net中动态添加和删除数据验证,vb.net,vsto,add-in,office-interop,Vb.net,Vsto,Add In,Office Interop,我正在尝试向单元格的范围添加和删除数据验证(以及incell下拉列表)。这是我第一次运行它,它工作正常。但我总是在随后的执行中出错 我得到的错误是“来自HRESULT的异常:0x800A03EC” 代码如下: If type = "a1" Then Try Me.Range("A1:A20").Validation.Delete() Me.Range("A1:A20").Validation.Add(Type:=Excel.XlDVType.xlValidateList, _

我正在尝试向单元格的
范围添加和删除数据验证(以及incell下拉列表)。这是我第一次运行它,它工作正常。但我总是在随后的执行中出错

我得到的错误是“来自HRESULT的异常:0x800A03EC”

代码如下:

If type = "a1" Then
  Try
    Me.Range("A1:A20").Validation.Delete()
    Me.Range("A1:A20").Validation.Add(Type:=Excel.XlDVType.xlValidateList, _
                    AlertStyle:=Excel.XlDVAlertStyle.xlValidAlertStop, _
                    [Operator]:=Excel.XlFormatConditionOperator.xlBetween, _
                    Formula1:="=rangedname1")
  Catch ex As Exception
    MsgBox(ex.ToString)
  End Try
ElseIf type = "b2" Then
  Try
    Me.Range("A1:A20").Validation.Delete()
    Me.Range("A1:A20").Validation.Add(Type:=Excel.XlDVType.xlValidateList, _
                    AlertStyle:=Excel.XlDVAlertStyle.xlValidAlertStop, _
                    [Operator]:=Excel.XlFormatConditionOperator.xlBetween, _
                    Formula1:="=rangedname2")
  Catch ex As Exception
    MsgBox(ex.ToString)
  End Try
EndIf

以前有人处理过这个问题吗

您正在使用哪个版本的Excel?此代码是否在某种循环中运行?由于大多数数据类型中的起始索引为0,所以容易发生此错误,但Excel从1开始索引。@可能的话,代码相当复杂。谢谢你的信息,我遇到了这样的问题。我的第一个问题是什么真正失败了:删除还是添加?在我的例子中,当我第二次尝试添加验证时,它显示了相同的HRESULT。我建议继续删除并添加不同的Try-Catch:谁知道会发生什么:)