2013-07-11 258 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个列集,然后是整个工作表,可以是成千上万的行。它是一个继承的项目,所以不得不使用我所拥有的。这真是一个很好的东西,所以很可能只是让你的建议得到它的工作。 –

相关问题