ギリギリ行けるお一人様のライン

たとえばオートフィルターを用いるとステータスバーに「○レコード中○個が見つかりました。」と表示されますが、
VBAでこの表示を取得する方法はありますか?
同様に○レコード、○個の数値を取得する方法はありますか?

A 回答 (3件)

こんにちは。




自分で文字列をセットしたり、セットした文字列を持ってくるのは出来ますが、残念ながら質問のメッセージは取得できません。

で、色々あるとは思いますが、一案。。

-------------------------------------------
Sub Test()

Dim AllSu As Long
Dim PicupSu As Long

 With ActiveSheet.AutoFilter.Range

   AllSu = .Rows.Count - 1

   With .SpecialCells(xlCellTypeVisible)
     PicupSu = .Count / .Columns.Count - 1
   End With

 End With

 MsgBox AllSu & " レコード中 " & PicupSu & " 件見ーっけ!"

End Sub
-----------------------------------------------

以上です。
 
    • good
    • 0
この回答へのお礼

ありがとうございます。
Application.Statusbar="AAAAA"で表示できるのですから、逆に引っ張ってくることも出来るんじゃないかと思ったのですが、そうはいかないんです。

で、代わりの案をありがとうございます。
完璧に取得できました。さすがtaocatさんですねえ!

お礼日時:2006/04/26 17:44

質問文からは「何をした時に表示を取得」したいのかがわからないので推測で簡単な例を。



【例】Excel2000にて確認
ある表(Sheet1のA1:G100)でオートフィルタを設定し、フィルタを実行したタイミングでメッセージボックスにより結果を表示
≪表の条件≫
(1) 1行目=項目行、2行目~データ(全データ件数:99件)
(2) A列は空白なし([No.] など)
(3) セル[H1]に =SUBTOTAL(3,A2:A100) と入力

Sheet1のシートタブを右クリック → [コードの表示(V)] で表示された画面に下記のコードを貼り付け

Private Sub Worksheet_Calculate()
  範囲 = Application.WorksheetFunction.CountA(Range("A2:A65536"))
  結果 = Application.WorksheetFunction.Subtotal(3, Range("A2:A65536"))
  If 範囲 <> 結果 Then
    MsgBox 範囲 & "レコード中 " & 結果 & "個が見つかりました "
  End If
End Sub

CountA(Range("A2:A65536"))・・・A列2行目以降の空白でないセルの個数=全データ件数としています。
空白なしの列を設けることで表の範囲が変わっても自動的に全件数を取得できるようになっています。
そのため条件(1)・(2)のようにデータは2行目以降、A列は空白なしにしています。

セル[H1]のSUBTOAL関数で抽出結果の件数が取得できます。
関数については参考URLをご覧になってください。

このマクロはシート内で計算が実行されたときに作動します。(オートフィルタを実行するとシート内は再計算されます)
もともと表内に計算式があれば問題ありませんが、わかりやすいように条件(3)でSUBTOTAL関数を設定しています。

参考URL:http://www.relief.jp/itnote/archives/000476.php
    • good
    • 0
この回答へのお礼

こちらもすばらしい代替方法をありがとうございました。
勉強になりました。

お礼日時:2006/04/26 17:46

EXCELのバージョンが2002/2003なら


=ROWS(列の範囲)&"レコード中"&SUBTOTAL(103,列の範囲)&"個が見つかりました。"

※抽出に使った列の範囲のオートフィルタの条件が空白の場合は集計できません。
    • good
    • 0
この回答へのお礼

残念ながらエクセル2000ですのでSUBTOTAL(103,列の範囲)がエラーになります。
VBAで取得したいのです。

お礼日時:2006/04/26 15:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報