- ベストアンサー
エクセルVBA/StatusBarの表示文字列の取得方法
たとえばオートフィルターを用いるとステータスバーに「○レコード中○個が見つかりました。」と表示されますが、 VBAでこの表示を取得する方法はありますか? 同様に○レコード、○個の数値を取得する方法はありますか?
- みんなの回答 (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 ----------------------------------------------- 以上です。
その他の回答 (2)
- takibo
- ベストアンサー率57% (116/200)
質問文からは「何をした時に表示を取得」したいのかがわからないので推測で簡単な例を。 【例】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関数を設定しています。
お礼
こちらもすばらしい代替方法をありがとうございました。 勉強になりました。
- mshr1962
- ベストアンサー率39% (7417/18945)
EXCELのバージョンが2002/2003なら =ROWS(列の範囲)&"レコード中"&SUBTOTAL(103,列の範囲)&"個が見つかりました。" ※抽出に使った列の範囲のオートフィルタの条件が空白の場合は集計できません。
お礼
残念ながらエクセル2000ですのでSUBTOTAL(103,列の範囲)がエラーになります。 VBAで取得したいのです。
お礼
ありがとうございます。 Application.Statusbar="AAAAA"で表示できるのですから、逆に引っ張ってくることも出来るんじゃないかと思ったのですが、そうはいかないんです。 で、代わりの案をありがとうございます。 完璧に取得できました。さすがtaocatさんですねえ!