人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBAを使用し、エクセル2003のスティータスバーに在庫数、合計数、キズの数を表示させる方法をどなたか教えてください。表示の中味は在庫数⇒=ABS(COUNTIF($N$1:$N$45529,"済")+COUNTIF($N$1:$N$45529,"×")-COUNTIF($K$1:$K$45529,"○"))合計数⇒=COUNTIF(A1:A50000,"検査済")キズの数⇒=COUNTIF(H1:H50000,"キズ")です。

よろしくお願いいたします。


●質問者: noshiroon
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
ベストアンサー

こんな感じ(だと思う)。

  1. メニューから、Visual Basic を起動
  2. データが乗っているシートをプロジェクトウィンドウで、ダブルクリック
  3. 開いたコードウィンドウに、以下のコードを記載
Private Sub ステータスバーにデータを表示する(ByVal Target As Range)

 Dim データ As Range
 Dim 在庫数 As Long
 Dim 合計数 As Long
 Dim キズの数 As Long

 Set データ = Target.Worksheet.Range("$N$1:$N$45529")
 在庫数 = Abs(Application.WorksheetFunction.CountIf(データ,"済") _
 +Application.WorksheetFunction.CountIf(データ,"×") _
 -Application.WorksheetFunction.CountIf(データ,"○"))

 Set データ = Target.Worksheet.Range("A1:A50000")
 合計数 = Application.WorksheetFunction.CountIf(データ,"検査済")

 Set データ = Target.Worksheet.Range("H1:H50000")
 キズの数 = Application.WorksheetFunction.CountIf(データ,"キズ")

 Application.StatusBar = _
 "在庫数:" & 在庫数 & "、 " & _
 "合計数:" & 合計数 & "、 " & _
 "キズの数:" & キズの数

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
 Call ステータスバーにデータを表示する(Target)
End Sub

Private Sub Worksheet_Activate()
 Call ステータスバーにデータを表示する(ActiveSheet.Range("A:A"))
End Sub

Private Sub Worksheet_Deactivate()
 Application.StatusBar = False
End Sub


ステータスバーが本来の動きをしなくなると、使いずらいんじゃないかな、という気もします。
なので、データが入ってるシートがアクティブになってないときには、元の動作に戻すようにしてます。


a-kuma3さんのコメント
VBA 苦手ぇ?

noshiroonさんのコメント
早速のご回答有り難うございます。VBA初心者なので質問内容も分かりずらかったと思いますが、分かりやすく説明いただき感謝致します。

2 ● Silvanus

値を監視するワークシートに以下のマクロを貼り付けてみて下さい。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim 在庫数 As Long, 合計数 As Long, キズ数 As Long

Application.DisplayStatusBar = True

在庫数 = Abs(Application.CountIf(Range("$N$1:$N$45529"), "済") _
 + Application.CountIf(Range("$N$1:$N$45529"), "×") _
 - Application.CountIf(Range("$K$1:$K$45529"), "○"))
合計数 = Application.CountIf(Range("$A$1:$A$50000"), "検査済")
キズ数 = Application.CountIf(Range("$H$1:$H$50000"), "キズ")

Application.StatusBar = "在庫数 = " & 在庫数 & ", 合計数 = " & _
 合計数 & ", キズの数 = " & キズ数

End Sub

Private Sub Workbook_Deactivate()

Application.StatusBar = False

End Sub

Silvanusさんのコメント
スミマセン、回答かぶりました…orz。

a-kuma3さんのコメント
いやいや、質問者の方が VBA を自分でやる気になっているのであれば、似たようなコードの回答が複数つけば「ああ、これが普通のやり方なんだな」って思うでしょうし、違ったコードであれば「こんなやり方もあるのか」という気づきがあるでしょうし、どちらにしても有益だと思います。 とりあえず、ぼくのコードではステータスバーが表示されてない場合のことを考慮してないんだな、ってことが分かります <tt>(^^;</tt>

noshiroonさんのコメント
迅速に対応頂き感謝致します。VBA初心者なので、今後も質問する事があると思います。またお力をお貸し下さい。

Silvanusさんのコメント
>noshiroonさん お役に立てれば幸いです! >a-kuma3さん お心遣い誠に傷み入ります!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ