0

基準を満たさない特定のアイテムをスキップして、多くのアイテムに対して実行される手順があります。しかし、私は戻って、最初のパスで見逃されたいくつかの個人に対してそれを実行します. 私は現在、個人ごとに手順を手動で再実行することでこれを行っていますが、理想的には、解決策をもう少し手放したいと考えています.

私の上司が提案した効果的なことは、問題の項目の名前を含むリストを作成し (データ -> リストのように)、リストを反復処理することです。悲しいことに、私のヘルプファイル fu は私を失敗させているようです。

「マクロの生成」コマンドを実行すると、最初にリストを作成する 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

助言がありますか?

4

3 に答える 3

2

おそらくこれらの行に何か:

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
于 2008-12-07T23:55:34.910 に答える
0

私の最終的な解決策は、リストを外部データクエリとしてインポートし、適切に名前を付けて範囲として参照することでした。そう:

For each item in Sheets("Sheet1").Range("Range1")
    Do stuff
Next item
于 2009-07-03T00:08:12.917 に答える
0

次の方法で反復できます。

set rgList = Range("name_of_range")    
i = 1 の場合 rgList.Rows.Count へ
  ' rgList.Cells(i, 1) を使って何かをする
  RunProcedure(rgList.Cells(i, 1))
次は

ここでは、範囲が列にあると想定しました。それが行にあった場合、2番目のインデックスで反復を行う必要がありました。
もちろん、範囲を反復するより良い方法があるかもしれません。私はこれを小さなスクリプトで使用しており、非常にうまく機能しています。

于 2008-12-07T23:35:27.837 に答える