• ベストアンサー

エクセルVBA/StatusBarの表示文字列の取得方法

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

質問者が選んだベストアンサー

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

こんにちは。 自分で文字列をセットしたり、セットした文字列を持ってくるのは出来ますが、残念ながら質問のメッセージは取得できません。 で、色々あるとは思いますが、一案。。 ------------------------------------------- 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 ----------------------------------------------- 以上です。  

merlionXX
質問者

お礼

ありがとうございます。 Application.Statusbar="AAAAA"で表示できるのですから、逆に引っ張ってくることも出来るんじゃないかと思ったのですが、そうはいかないんです。 で、代わりの案をありがとうございます。 完璧に取得できました。さすがtaocatさんですねえ!

その他の回答 (2)

  • takibo
  • ベストアンサー率57% (116/200)
回答No.3

質問文からは「何をした時に表示を取得」したいのかがわからないので推測で簡単な例を。 【例】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
merlionXX
質問者

お礼

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

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

EXCELのバージョンが2002/2003なら =ROWS(列の範囲)&"レコード中"&SUBTOTAL(103,列の範囲)&"個が見つかりました。" ※抽出に使った列の範囲のオートフィルタの条件が空白の場合は集計できません。

merlionXX
質問者

お礼

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

関連するQ&A

  • EXCELのオートフィルターで抽出されたレコード件数をVBAで参照する方法は?

    EXCELのオートフィルターで抽出されたデータの件数が、左下のステータスバーに表示されますが、その抽出件数をVBAで取得する方法を教えてください。

  • エクセルのオートフィルターで個数を表示するには?

    エクセルのオートフィルターを使って指定条件のデータを表示させます。 その時に,画面左下(ステータスバーかな?)に「○○レコード中○○個が見つかりました」と表示されます。 この表示が使用するパソコンによっては,表示される場合と,表示されない場合があります。 おそらく,そのパソコンのエクセルの何かの設定の有無が関係すると思いますが,分かりません。 どうもエクセルのバージョンの新旧とは関係ないようですが。 どうすれば,この表示が出てくるのでしょうか。

  • Excelオートフィルタ使用時のステータスバー表示について

    オートフィルタで何かを選んでデータを抽出すると、 △個のレコード中○個が見つかりました。と表示されるときと表示されないときがあるのですが何か設定なのでしょうか? ご存知の方教えてください。

  • EXCELのオートフィルターにて、何を選択したかを取得したい

    EXCELのオートフィルターにて、何を選択したかを取得したい 例えば、ユーザーがオートフィルターにて、店番=1を選択した場合に、 コメントとして「店番=1」と表示したいのです。 どのようにしたら、VBAから取得できるのでしょうか? ヒントをお願いします

  • エクセルで、オートフィルタ実行後のステータスバーにデータ個数表示がされなくなった

    エクセル2003を使用しています。 オートフィルタ機能を使って、データを抽出した後に、ステータスバーに「○レコード中○個が見つかりました」という表示が今まで出ていたのに「急に?」出なくなり、ただ単に「フィルタモード」と表示されるだけです。 シートに数式がたくさんあって、重たい再計算が走ると起きる現象で、ツールメニューのオプションの再計算を手動にしてから絞り込むと、解決できることまではわかりました。 今まで、このような現象はなく、現象「発生前」「発生後」で、重たい再計算が必要になるような入力をした覚えもありません。せいぜい、個人レベルのデータベースであり、250程度のレコードです。複雑な関数も使用していません。 このような現象は、そのときどきによって起こり得て、また、なくなることもある、という「気まま」な現象なのでしょうか? オートフィルタ実行時に、そのたびに再計算機能を外すのはやや面倒なので、できれば現象回避策があるといいのですが。

  • エクセルのオートフィルタについて

    エクセルでオートフィルタを使用した場合、 ステータスバー左下に「○○ レコード中 ○個が見つかりました。」と 表示されるファイルと、「フィルタ モード」 と表示されるファイルがある事が分かりました。 この二つのファイルの違いは特に無いと思っていますが、 何が原因でこのような現象が発生するのでしょうか? なにか対策をすれば後者のファイルも、 前者のように表示させる事が可能なのでしょうか? ご教授をお願いします。

  • VBAでセルが現在表示されているのか非表示かの情報を取得する

    自己流VBA使用初心者です。 エクセルのオートシェイプでリストを絞って表示してある時、VBAで、あるセルが現在表示されているのか非表示なのかの情報を取得する構文はありますでしょうか?

  • エクセル オートフィルタで摘出したデータだけをカウントしたい vba

    エクセルでオートフィルタして摘出したデータをカウントしたいのですその結果をVBAのメッセージボックスで表示させてたいです。 オートフィルタについては、シート上で自ら条件を出しますので、ただカウントだけしたいです。 カウントさせるセルはA列の10番から110番です。 データは数値です お忙しいところどなたかご教授ください

  • Excel97でオートフィルタをかけた際の画面表示について

    今OSが98でExcelは97を使用しています。 オートフィルタをかけると、ステータスバーに*レコード中*件見つかりましたと表示されるときとされないときがあります。 同じマシンでブックによってかわります。ちなみに新しいブックで過去のAという ブックのデータをコピーすると表示できます。 しかし、いつも同じブックで表示できません。またそのブックを開いた後 一旦閉じても他のブックを開いてもその表示がでないときもあります。 これは作った状態によるのでしょうか? どなたかご存知でしたら教えてください。よろしくお願いいたします。

  • excel VBAでステータスバーに...

    excelのVBAでの話です。 ステータスバーにProgressBarを表示させて計算の進行状況を表示させたいのですが、 ステータスバーに文字を表示させることしかできません。 どうしてもシート上にProgressBarコントロールを配置せずに ステータスバーに表示させたいのです。 どのようにしたらいいのでしょうか?

専門家に質問してみよう