2013-07-11 324 views
0

經過大量搞亂並嘗試將其排除後,我很茫然。我有一個C#互操作,返回單元格地址的CSV列表。這部分工作沒有問題。我有一個設置的這些單元格顏色爲紅色的方法:Excel VBA根據單個單元格的範圍設置單元格顏色

Worksheets(Worksheet).range(errorCells).Interior.Color = RGB(216, 80, 83) 

errorCells是包含諸如

"O148,O389,O396,O397,O398,O399,O400,O401,O402,O403,O404,O405,O406,O407,O408,O409,O410" 

我的問題是,當errorCells的字符串是大數據的字符串(約56元素)Excel引發:

Run-time error '1004': 
Application-defined or object-defined error 

將csv列表正確傳遞到方法中。這基本上已經改變,以幫助提高性能,因爲一次做一個單元的效率不高。

任何任何想法?

+0

因此,如果errorCells只包含1個項目,那麼你的方法工作?還有56以下的任何數字? – Conquistador

+0

如果csv行中有大約30個實體,它就可以工作。事情是我感到困惑的地方,我不認爲會有限制。 –

回答

0

也許你可以嘗試一種不同的方法。假設這4位錯誤手機號碼莫名其妙地對應於[行,列]單元格引用,你可以試試這個:

Dim varSplit As Variant 
varSplit = Split(errorCells, ",") 'Read into an array each value to access 

然後遍歷使用每個循環和varSplit對象:

  1. 分手了每串入行和列的部分
  2. 訪問您的範圍(s)表示,需要通過使用着色:

    Cells(Row,Column).Interior.Color = RGB(216, 80, 83) 
    
+0

這是否像我最初傳回數組一樣快,並使用A34引用循環遍歷此設置每個單元格的範圍? –

+0

性能真的是一個問題嗎?你提到你正在爲56個單元做這個,那是代表嗎? – Danzomida

+0

這是爲一列設置有12個列集,然後是整個工作表,可以是成千上萬的行。它是一個繼承的項目,所以不得不使用我所擁有的。這真是一個很好的東西,所以很可能只是讓你的建議得到它的工作。 –

相關問題