2011-10-26 10 views
3

マクロを使用してExcel 2003のフィルタリングされたリスト範囲でCopy()メソッドを使用しました。返された範囲を取得して行を数えたいので、複数の行をコピーしたことを確認できます。 「オブジェクト必要」エラー。VBAのCopy()メソッドから返されたRangeオブジェクトを設定しますか?

は、私はコピー()メソッドは、範囲オブジェクトを返す、Microsoftのウェブサイト上でVBAの参照で聞いています。しかし、これはそうではないように思われるコードから。教えてください!

ありがとうございます。

For J = 1 To .ListObjects.Count 
    ' Filter 
    .ListObjects(J).Range.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=CritRange 
    Set CopiedRange = .ListObjects(J).Range.Copy ' Object required error 
    If CopiedRange.Rows.Count > 1 Then 
    {etc...} 
+1

これがあなたの受け入れられた回答であれば、それを回答として投稿し、それを解決済みとしてマークする必要があります。あなたの質問が解決されたことを自分のような人が知るように。 – Reafidy

+0

私は当時、私はあまりにも新しいメンバーだったので、私は知りませんでした。 – deed02392

+0

十分なフェア!ありがとう。 – Reafidy

答えて

0

ExcelはCopy()操作で範囲オブジェクトを返しません。それをコピーする前の行数が表示されますが、特に可視行のみを考慮しないとこれは機能しませんでした。したがって、私は、新しい関数を記述するために必要な:

Function CountVisibleRows(rg As Range) 
    Dim NumRows As Integer 
    ' Count visible cells in the first column, minus one to account for the header 
    NumRows = rg.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 
    CountVisibleRows = NumRows 
End Function 

私は、コピーする前に範囲でこれをテストし、(コピー()メソッドのコピーのみ表示される行はデフォルトであるため)コピーされる行の数を決定しました。

関連する問題