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


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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/12/18 22:02:40
  • 終了:2012/12/25 22:05:03

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4624ベストアンサー獲得回数19592012/12/18 22:38:11

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

  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


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

id:a-kuma3

VBA 苦手ぇ~

2012/12/18 22:38:45
id:noshiroon

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

2012/12/18 23:25:31

その他の回答(1件)

id:a-kuma3 No.1

a-kuma3回答回数4624ベストアンサー獲得回数19592012/12/18 22:38:11ここでベストアンサー

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

  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


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

id:a-kuma3

VBA 苦手ぇ~

2012/12/18 22:38:45
id:noshiroon

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

2012/12/18 23:25:31
id:Silvanus No.2

Silvanus回答回数174ベストアンサー獲得回数672012/12/18 22:45:43

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

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
他2件のコメントを見る
id:noshiroon

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

2012/12/18 23:37:25
id:Silvanus

>noshiroonさん
お役に立てれば幸いです!

>a-kuma3さん
お心遣い誠に傷み入ります!

2012/12/19 09:17:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません