2012-01-28 42 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()は、列の一意の項目の数を配列として戻す関数です。現在私が働いているデータは2つのユニークな項目が列にあります。 MsgBox()関数を使用すると、私は2つのユニークな項目を取得する必要があります。これは、新しいワークシートが追加された後、サブルーチンが何とかエスケープされたと思います。forループを使用して複数のワークシートを追加する

アイデア?

EDIT:つまり

は、どのように私が最近作成したワークシートをアクティブにするために、Excelのですか?

+1

正確にあなたの質問は何ですか:

結果は次のようになりますか?あなたの完全なコードを貼り付けると、 'UniqueItems'関数が私たちに答えをテストできるようになります。 – brettdj

答えて

1

新しいシートを追加すると、そのシートがアクティブシートになります。一度反復した後は、空のワークシートに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 
関連する問題