2016-07-12 130 views
1

您好我正在为excel的VBA中的宏。我的代码中有一个嵌套的for循环,如下所示。第二个循环不运行;即使第二个循环中的MsgBox()命令也不会导致任何操作,程序似乎会跳过嵌套循环而不报告错误。VBA嵌套for循环不会运行

在普通的英语本嵌套循环应:

1)取从在阵列categories_string(第i项第一个for循环的字符串)。

2)通过在Excel文件(第二for循环300+行中列“AE”迭代,“长度”是在“AE”数据的列)

3)寻找长度字符串匹配并将1添加到用变量设置为0(if语句)填充的categories_value数组中的相应条目。

For i = LBound(categories_string) To UBound(categories_string) 
    For p = 1 To p = length 
     If Worksheets("sheet1").Cells(p + 2, "AE").Value = categories_string(i) Then 
     categories_value(i) = categories_value(i) + 1 
     End If 
    Next 
Next 
+8

'For p = 1 To length' –

+0

由于您已经知道如何使用数组,因此为什么不将列AE中的值放入数组中并循环使用呢?然后循环单元格本身会更快。 'AEArray = Worksheets(“sheet1”)。Range(“AE3:AE”&length).Value' then instead for for loop on this array instead。 –

+0

你的答案解决了它。和伟大的建议!这仅仅是我使用VBA的第二天,因此任何建议都是值得赞赏的。 – PSwalker

回答

4

变化

For p = 1 To p = length 

For p = 1 To length 

应该可以解决你的权利了。

你可能也想要考虑Scott Cranner's comment,特别是如果你的categories_string很大,并且length很大。或者,只是为了练习