2012-01-28 58 views
0
For j = 1 To UniqueItems(ActiveSheet.Range(TrN_col & "2:" & TrN_col & LastTrN), True) 
    With Workbook 
     Worksheets.Add().Name = UniqueItems(ActiveSheet.Range(TrN_col & "2:" & TrN_col & LastTrN), False)(j) 
    End With 
Next j 

UniqueItems()是一个函数,它返回列中唯一项的数量作为数组。目前,我正在处理的数据中有两个独特的项目。如果我使用MsgBox()功能我得到两个独特的项目,我应该。这让我觉得加入一个新的工作表后的子程序以某种方式逃脱。添加多个工作表来优化使用for循环

任何想法?

编辑:

换句话说我如何才能练成激活最近创建的工作表?

+1

究竟什么是你的问题?并粘贴您的完整代码 - 即在'UniqueItems'功能将使我们能够测试任何答案。 – brettdj 2012-01-28 03:03:45

回答

1

当您添加一个新工作表,它成为活动工作表。当您遍历一次....你可能是在一个emptyworksheet评估uniqueitems

我会重构uniqueitems返回,而不是你在做什么的集合或字典。

结果会看起来像:

Dim list as Dictionary 

set list = UniqueItems(ActiveSheet.Range(TrN_col & "2:" & TrN_col & LastTrN)) 

For each key in list.keys 
    worksheets.add().name = key 
next