通过vb.net自动执行Excel验证0x800A03EC时出现任何错误解决方案。
注意:相同的代码在90%的系统中运行。同样在休息时失败。
以下是我使用过的代码:
For K = 2 To 1000
objxl.Range("F" & K).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-2]&RC[-2],C[13]:C[14],2,0),"""")"
Next
i = 25
objxl.Range("D2:D1000").Select()
If lastrow_main = 2 Then
lastrow_main = lastrow_main
Else
lastrow_main = lastrow_main - 1
End If
With objxl.Selection.validation
.Delete()
.Add(Type:=Excel.XlDVType.xlValidateList, AlertStyle:=Excel.XlDVAlertStyle.xlValidAlertStop, Operator:= _
Excel.XlFormatConditionOperator.xlBetween, Formula1:="=$X$2:$X$" & lastrow_main & "")
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
答案 0 :(得分:0)
见这里:
Excel.XlFormatConditionOperator.xlBetween, Formula1:="=$X$2:$X$" & lastrow_mail
=$X$2:$X$" & lastrow_mail
必须是一个分隔的值字符串。例如1到10:
Formula1:="1,2,3,4,5,6,7,8,9,10"
答案 1 :(得分:0)
这很可能与他的一些用户使用与英语不同的语言运行Excel的事实有关。我遇到了同样的问题并一直在寻找答案。
在使用Validation.Add自定义公式时,Excel似乎不会执行自动公式转换。
我已尝试过http://www.add-in-express.com/creating-addins-blog/2009/02/13/old-format-invalid-type-library/这里的建议,这些建议也在此处发布http://msdn.microsoft.com/en-us/library/office/aa537159(v=office.11).aspx使用Validation.Add时,这些建议都不起作用。
我发现唯一可行的方法是自己手动翻译功能名称。个人维护所有函数名称的翻译并不是我真正想做的事情。我更倾向于使用Excel来翻译它们,或者只是将它们设置为英文,就像“VSTO”应该允许你这样做。