2012-11-25 73 views
3

我有一個Excel工作表Excel中運行時錯誤16表達式太複雜

For x = 1 To ThisWorkbook.Worksheets("GRP0").Range("D9:D112").Rows.Count 
' do work here 
Next x 

雖然這基本代碼,當我執行它給

Run-time error '16': 

Expression too complex 

我使用Excel 2007中的錯誤兼容性模式,我相信該工作表是在Excel 2003中製作的,如果有幫助的話。任何想法是什麼導致了錯誤?

+2

你的代碼沒有問題,工作正常。您是否使用for循環內的代碼測試它?刪除它,然後嘗試重新測試。 – InContext

+0

谷歌搜索這導致了一些類似的問題xl07這樣[這個](http://stackoverflow.com/questions/4838000/vba-error-code-run-time-error-16-too-complex) – brettdj

+2

有你嘗試將長操作分成每個語句/行的單個賦值,所以你可以隔離哪個會導致錯誤? (我想添加一條評論,但是我的代表不允許我:p,所以我將它寫爲一個新的答案。) –

回答

2

讓我只是回答這個問題,讓它留下'未回答'部分...以及其他誰會尋找答案,看到完美的問題。

描述的問題隨時會發生。我不知道確切的原因,但有一個簡單的方法來解決它。你只需要使用變量,在循環開始之前設置它的值,並在循環起始行中使用這個變量。這可能如下:

Dim rowsCount As Long 
    rowsCount = ThisWorkbook.Worksheets("GRP0").Range("D9:D112").Rows.Count 
    'and any other complex statement could be placed here 
For x = 1 To rowsCount 
    'do work here 
Next x 

根據我的經驗,所有'表達太複雜'的問題可以通過這種方式解決。

+0

請更正'rowsCount'上的拼寫,其背後的原因是X的默認類型爲Int,其中Int的限制爲32767.根據[here](http://msdn.microsoft.com/zh-cn/library/ office/aa164754(v = office.10).aspx),從Excel 2007起,行限制爲>> 32767,因此溢出。 – Larry

+0

我不認爲X是整數是問題的原因。它應該返回'溢出'的錯誤,但有'表達複雜'的消息.... –

+0

你是正確的,如果我宣佈X爲整數和硬編碼100,000,它會引發「溢出」錯誤。而且我無法在我的2007環境中重現「錯誤表達式太複雜」.. – Larry

相關問題