プロが教える店舗&オフィスのセキュリティ対策術

よろしくお願いします。以下のように組んで見ました。
Private Sub Worksheet_Change(ByVal Target As range)
Dim clm As Integer
Dim row As Integer
clm = Target.Column
row = Target.row
If Worksheets("発注指示").Cells(row, clm) = "不足" Then
MsgBox "在庫不足", vbOKOnly, "注意"
End If
End Sub
どうして動かないのでしょう。
本当にわからないので、教えてください。
これで一日つぶれました。

A 回答 (3件)

こんにちは。

maruru01です。

Worksheets("発注指示").Cells(row, clm)
のところを、
Worksheets("発注指示").Cells(row, clm).Value
かな。

ちなみに、
「かんたんプログラミング Excel2000VBA For Windows」
  著:大村あつし  出版社:技術評論社
という本は、「基礎編」「コントロール・関数編」「応用編」わかりやすいですよ。
3冊で7000円ほどしますが、初心者やプログラミングをあまり知らない人向けです。
では。
    • good
    • 0

シートまたはBookの全体が見えないので断定できませんが、質問のコードだけをみれば問題ないでしょう。


何を行いたいか完全にはわかりませんが、コードは機能しているはずです。

Worksheet_Changeが貼り付けてあるのはシート『発注指示』ではないと思いますが、このマクロがあるシートのセルの値を変更した場合、シート発注指示の同じセル座標に『不足』の文字が入っていればメッセージが出ます。
例えば、シート『発注指示』のセルA1にのみ『不足』と入力されていれば、Worksheet_Changeが貼り付けてあるシートのセルA1を変更した場合のみ、メッセージが出ることになっています。
従って、シート『発注指示』に不足の文字が入っているセルと同じセルを変更しないとメッセージは出ません。

Worksheet_Changeが貼り付けてあるのがシート『発注指示』ならば、書き換えてしまうわけで機能しませんね。

どうも、シート発注指示とWorksheet_Changeが書かれているシートがどうなっているのかイメージが湧きません。
何故rowとcolが固定?? 1つ前の質問もそういう訳で?ですね。

この回答への補足

ありがとうございます。
いろいろやっているうちに、出たり出なかったりして困っています。
このコードがはってあるのは、出荷の入力シートです。同じシートが何枚もあり
ます。
>従って、シート『発注指示』に不足の文字が入っているセルと同じセルを変更し>ないとメッセージは出ません。
ご指摘のとおり、同じセル以外にも、不足と変化する別のアドレスのセルが
あります。
一度、同じセルだけなら何本不足というところまでいったのですが、
やっているうちに、同じセルでもいかなくなりました。
出荷入力シートの一つだけで実験しているから悪いのでしょうか?
よろしくお願いします。

補足日時:2002/03/29 10:24
    • good
    • 0

質問にあるコードを見て言えることは、



(1)Worksheet_Changeが書いてあるシートしかメッセージは出ない。
   Worksheet_Changeが書いてないシートでは何も出ない。

(2)このWorksheet_Changeが書いてあるシートで、
    シートのセル(r行目c列目とする)に入力した場合、
    シート『発注指示』のr行目c列目に『不足』の文字があればメッセージが出る。
    『不足』の文字がなければメッセージは出ない。

(3)このWorksheet_Changeが書いてあるシートで、
    Worksheet_Changeが書いてない他シートを参照しているセルがあり、
    他シートの値を変えた場合はWorksheet_Changeは発生しない。
     (Worksheet_Changeが書いてあるシートのセルの値は変わるがChangeイベントは発生しない)

ということでしょう。
    • good
    • 0

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