在Excel 2003中创build一个大小可变的组合的好方法是什么?

我有一个运行很多项目的程序,跳过某些不符合标准的项目。 然后,我回头为其中一些在第一轮错过的个人运行。 我目前通过手动为每个人重新运行程序来做到这一点,但理想情况下,更喜欢一个解决scheme。

我的老板build议的东西可能是有效的将创build一个列表(如在数据 – >列表),其中包含有问题的项目名称,然后迭代列表。 可悲的是,我的帮助文件fu似乎是在让我失望 – 我不知道我是否不知道要找什么,或者什么。

运行“Generate Macro”命令显示,首先创build列表的VBA是沿着ActiveSheet.ListObjects.Add(xlSrcRange,Range(“$ A $ 1”),xlYes).Name =“List1”

不幸的是,我似乎无法弄清楚如何做结果列表的东西。 我正在寻找循环沿线

For Each ListItem in List Run the procedure on the text in ListItem.Value Next ListItem 

有什么build议么?

也许这方面的一些东西:

 Dim Counter 'module level ' Sub RunSomeProc() Counter = 0 '1st test ' SomeProc '2nd Test skipped items' For Each c In Range("c1:c" & Counter) SomeProc Next End Sub Sub SomeProc() For Each c In Range("NamedRange1") If SomeTest=SomeVal Then 'Write to 2nd test range ' Range("C1").Offset(Counter, 0) = c 'Value of cell' Counter = Counter + 1 End If Next End Sub 

你可以用这种方式迭代它:

设置rgList = Range(“name_of_range”)    
对于i = 1到rgList.Rows.Count
   '使用rgList.Cells(i,1)
   RunProcedure(rgList.Cells(i,1))
接下来我

我在这里假定范围是在一列; 是连续的,你应该在第二个索引上做迭代。
当然,可能有更好的方法来迭代一个范围; 我正在使用这个小脚本,并且工作得很好。

我最终的解决scheme是导入列表作为外部数据查询,然后我很好地命名和引用作为范围。 所以:

 For each item in Sheets("Sheet1").Range("Range1") Do stuff Next item