2012-07-02 89 views
0
For indY as Integer = 1 To xLsheet.UsedRange.Rows.Count Then 
If aRndLAcctNo.Contains(xLsheet.Cells(indy + 1, 2).Value.ToString()) Then 
aRndLTotProd.Add(Indy) 
End If 
Next 

当我将它设置为'至1000'时效果很好。但是当我使用'To xLsheet.UsedRange.Rows.Count'时,它会引发错误。我的excel文件包含16000行。请帮助如何优化For Loop。或者,如果你可能会建议另一种方式,我可以得到excel文件中的行,其中包含已在arndLacctNo字符串列表中的项目..针对大量数据优化循环

+4

正在抛出什么样的错误? – MarcinJuraszek

+0

只是一个猜测。也许整数数据类型太小?尝试writng: 对于indY as Long = 1 – mortb

+3

是不是对于indY作为整数= 1到xLsheet.UsedRange.Rows.Count而不是对于indY作为整数= 1到xLsheet.UsedRange.Rows.Count然后' – invisal

回答

2

您在这里遇到的主要问题是您没有研究错误信息,其次在这里还没有在你的问题中包含错误信息。

假如您收到了这样的事情:

prog.vb (5,63) : Error VBNC30205: Expected end of statement. 

这是告诉你,“在文件prog.vb,第5行,63列,你有一个错字,而不是语句的结束,你有什么其他”。

在我的情况下,第5行第63列是没有相应IfThen潜伏。看看你自己的错误信息,找到你自己的代码位置,并删除那里的违规关键字。这是一个简单的语法错误,与行数无关。