2013-07-25 58 views
0

任何錯誤解決方案從Excel驗證0x800A03EC通過vb.net自動執行時發生。Excel驗證錯誤HRESULT:0x800A03EC當從Vb.net自動執行時

注意:相同的代碼在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

從Microsoft Excel返回此錯誤有多種原因 - 最常見的情況是用戶嘗試寫入大於Excel的數據時可處理的數據。例如,如果您嘗試將長度超過1024個字符的字符串寫入Excel中的單元格中,請使用以下格式: –

+0

歡迎使用[so]。我敢打賭,你做錯了,在這裏看到我是如何得到一個國家幫助修復相同的錯誤信息:http://stackoverflow.com/questions/13908505/how-to-add-number-validation-in-ms- excel-cell-using-c-sharp - 注意'Formula1:=「= $ X $ 2:$ X $」&lastrow_main'中的值。由於其間歇性,您可能必須註銷該值才能重現該值。 –

+1

只是一個友善的負責人,[so]是一個非常活躍的網站,你應該在詢問後稍微留意一下。祝你好運 :) –

回答

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" 
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」應該讓你做的那樣。

相關問題