- ベストアンサー
エクセルで、こうやっても反応なしです。
よろしくお願いします。以下のように組んで見ました。 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 どうして動かないのでしょう。 本当にわからないので、教えてください。 これで一日つぶれました。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
シートまたはBookの全体が見えないので断定できませんが、質問のコードだけをみれば問題ないでしょう。 何を行いたいか完全にはわかりませんが、コードは機能しているはずです。 Worksheet_Changeが貼り付けてあるのはシート『発注指示』ではないと思いますが、このマクロがあるシートのセルの値を変更した場合、シート発注指示の同じセル座標に『不足』の文字が入っていればメッセージが出ます。 例えば、シート『発注指示』のセルA1にのみ『不足』と入力されていれば、Worksheet_Changeが貼り付けてあるシートのセルA1を変更した場合のみ、メッセージが出ることになっています。 従って、シート『発注指示』に不足の文字が入っているセルと同じセルを変更しないとメッセージは出ません。 Worksheet_Changeが貼り付けてあるのがシート『発注指示』ならば、書き換えてしまうわけで機能しませんね。 どうも、シート発注指示とWorksheet_Changeが書かれているシートがどうなっているのかイメージが湧きません。 何故rowとcolが固定?? 1つ前の質問もそういう訳で?ですね。
その他の回答 (2)
- nishi6
- ベストアンサー率67% (869/1280)
質問にあるコードを見て言えることは、 (1)Worksheet_Changeが書いてあるシートしかメッセージは出ない。 Worksheet_Changeが書いてないシートでは何も出ない。 (2)このWorksheet_Changeが書いてあるシートで、 シートのセル(r行目c列目とする)に入力した場合、 シート『発注指示』のr行目c列目に『不足』の文字があればメッセージが出る。 『不足』の文字がなければメッセージは出ない。 (3)このWorksheet_Changeが書いてあるシートで、 Worksheet_Changeが書いてない他シートを参照しているセルがあり、 他シートの値を変えた場合はWorksheet_Changeは発生しない。 (Worksheet_Changeが書いてあるシートのセルの値は変わるがChangeイベントは発生しない) ということでしょう。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 Worksheets("発注指示").Cells(row, clm) のところを、 Worksheets("発注指示").Cells(row, clm).Value かな。 ちなみに、 「かんたんプログラミング Excel2000VBA For Windows」 著:大村あつし 出版社:技術評論社 という本は、「基礎編」「コントロール・関数編」「応用編」わかりやすいですよ。 3冊で7000円ほどしますが、初心者やプログラミングをあまり知らない人向けです。 では。
補足
ありがとうございます。 いろいろやっているうちに、出たり出なかったりして困っています。 このコードがはってあるのは、出荷の入力シートです。同じシートが何枚もあり ます。 >従って、シート『発注指示』に不足の文字が入っているセルと同じセルを変更し>ないとメッセージは出ません。 ご指摘のとおり、同じセル以外にも、不足と変化する別のアドレスのセルが あります。 一度、同じセルだけなら何本不足というところまでいったのですが、 やっているうちに、同じセルでもいかなくなりました。 出荷入力シートの一つだけで実験しているから悪いのでしょうか? よろしくお願いします。