2011-07-16 5 views
0

私はVBAでExcel用のアプリケーションを作成しています。いくつかの条件を使用し、正常に動作している以下の関数によってレコード数を数えます。Excel VBA store counts出力をさらに操作するため

cnt = appExcel.Application.CountIfs(R1, AuditType, R2, "Fail", UserRange1, UserName & "*") 

ここで、R1、R2およびUserRange1は、個々のセルを記述するRange型です。我々は

R1.Address '$E:$E 
R2.Address ' $M:$M so on. 

を印刷する場合 私は「CNT」変数でこれらの基準を備えた本行の数を取得しています。

上記のセル範囲からカスタムセルを検索するような操作が必要です。これを行うには、それらのアドレスを "Range"オブジェクトに格納する必要があります。 フィルタリングされたレコードをどのように範囲内に保存することができますか教えてください。私は別のエリアにもコピーしたくありません。

答えて

1

を定義

エクセル2010を定義します。この例では、これを行うために必要な宣言とコードを追加しています。あなたのR1範囲の定数を含むセルに興味があると仮定します:

Dim rngFiltered As Excel.Range 
Dim nmNew As Excel.Name 

'... 

Set rngFiltered = R1.SpecialCells(xlCellTypeVisible) 
Set nmNew = ws.Names.Add(Name:="NewRange", RefersTo:="=" & rngFiltered.Address) 
+0

ありがとうございますが、私は名前付き範囲はフィルタリングされた内容に対してのみ作成できないと思います。彼らは最初から最後まですべての行を取る。 – AjayR

+0

オートフィルターを適用した場合は、xlCellTypeVisibleを指定できます。上記のコードを変更しました。それはあなたが欲しいものですか?私はあなたの "カスタムセル"がどのようにフィルタリングされているのか分かりません。 –

+0

ありがとう、私は自動フィルタのためのいくつかのサンプルコードを持って、あなたのソリューションは、私の結果を得るために追加することができます。 .Range( "A1:D1")。オート(2)、Criteria1:= 35オートフィルタ 。 – AjayR

0

あなたが意味するものを理解している場合は、参照される範囲を定義する名前付き範囲を挿入します。

Excel 2003の挿入>名前>数式>あなたはVBAで名前のオブジェクトを宣言してからアドレスにはRefersTo値です設定して、ワークシートに新しい範囲を追加名前