みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Office Excel こういう場合どうしたらいいでしょうか?

こんにちは。
エクセルを使って在庫管理をしてるのですが
在庫が1になったら発注をかけるようにしたいのですが
その際に発注をするように注意を促すメッセージを表示させたいと思っています。
マクロや条件付き書式や関数などいろいろありますが
こういう場合どうしたらいいでしょうか?
アドバイスよろしくお願いいたします。

投稿日時 - 2010-02-26 14:30:07

QNo.5707716

すぐに回答ほしいです

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

私なら、イベントプロシージャ(マクロの一種)で発注メール自体を飛ばしちゃいますね。
もはや「忘れる」可能性すら根絶できますので、一番合理的でしょう。

まず、現残が1になると起動させる範囲に、「範囲名」をつけます。例では「現残」。
で、このシートのシートモジュールにこれをコピペ。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rngGenzan As Range
Dim strProductID As String '商品ID
Dim MailSmtpServer As String
Dim MailFrom As String
Dim MailTo As String
Dim MailCc As String
Dim MailBcc As String
Dim MailSubject As String
Dim Mailbody As String

MailSmtpServer = "" 'メールサーバー名入れて下さい
MailFrom = "" '発信者入れて下さい
MailTo = "" '送付先入れて下さい
MailCc = "" 'CCの送り先入れて下さい
MailBcc = "" '同上
MailSubject = "商品発注:" '発注メールのタイトル
Mailbody = "" '本文

For Each rngGenzan In Range("現残")
If rngGenzan.Value = 1 Then
strProductID = rngGenzan.Offset(0, -1).Value
MailSubject = MailSubject & strProductID
If SendMailByCDO(MailSmtpServer, _
MailFrom, _
MailTo, _
MailCc, _
MailBcc, _
MailSubject, _
Mailbody) <> "ok" Then
GoTo ErrHandler
End If
End If
Next rngGenzan

Exit Sub
ErrHandler:
MsgBox "メール送信に失敗しますた('A`) 、環境をチェックしてください", _
vbCritical, "重大問題発生"
End Sub

そんで、Module1に参考URLのメール発信プログラムを乗っけたら、後は勝手にメール送信されます。
上記変数(Mailなんたら)も、シート上のどっかから変数化して取ってきてメール作っちゃうと合理的。
ちなみに上記はろくにテストもしてないしチューニング(普通なら起動範囲絞る)もしてないので、
使う場合はたたき台としてよろしくです。

ありゃー、確認画面でわかったけど、Tab利かないのね。見づらくてすみません。

参考URL:http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_080.html

投稿日時 - 2010-02-26 19:20:30

お礼

こんばんは。
これすごく便利ですね!
マクロをよく知らない私にとって目から鱗というか
思いもよらない方法で発注メールまで完了とは。
マクロも勉強したいと思っていたのでとても参考になりました。
>もはや「忘れる」可能性すら根絶
これです、これ!
忘れる馬鹿がいるんでわざわざ注意勧告を出すはめになっているので
もう少し勉強して教えていただいたマクロをたたき台として
自分なりのものを作っていきたいと思います。
ありがとうございました。

投稿日時 - 2010-02-27 18:53:50

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

こんにちは
#1補足です。
後からアップされた画像のイメージでよいなら、#2の方のアドヴァイスをもとに実現できますね。
#2の方の式を結合されたA3セルに条件(例えばチェックするセル範囲)やイメージ(条件付き書式で塗りつぶしとフォントを指定)に合うように編集すればよいです。

A3セル例)
=IF(COUNTIF([範囲],"<2")>0,"注文はしましたか?","")
※[範囲]はチェックするセルを指定します(下記参照)。

[範囲]例)
 $B$7:$B$* [*印に末尾の行番号を指定する]
 $B:$B [B1~B6セルに値 1 が無いこと]

 条件付き書式では、「セルの値が」を「数式が」に選択を変更して次の式を設定し、フォントとパターンの色を選択して下さい。

=$A$3="注文はしましたか?"
 

投稿日時 - 2010-02-26 15:50:29

お礼

こんばんは。
教えていただいたやり方で思うとおりできました^^
ありがとうございました。

投稿日時 - 2010-02-27 18:47:39

ANo.2

No.1さんの書かれている方法が一番判りやすいと思います。

ただ私はマクロを知らないので代替案としてはA1~A7に在庫数が入力されていた場合は
=IF(COUNTIF(A1:A7,"<2")>0,"注意:在庫数が1の項目があります","在庫は適正です")
のようなセルを目立つ場所に文字サイズを大きくして挿入します。

あとどのセルが1以下になったのかすぐに判るように在庫数の欄には条件付き書式で文字か背景の色が目立つようにしますね。

投稿日時 - 2010-02-26 15:20:53

お礼

早速のアドバイスありがとうございます。
教えていただいた計算式でうまくいきました。
条件付き書式で思うとおりできました。
ありがとうございました。

投稿日時 - 2010-02-26 15:52:08

ANo.1

こんにちは
>在庫が1になったら発注をかけるようにしたいのですが、その際に発注をするように注意を促すメッセージを表示させたいと思っています。
 おっしゃるとおり、条件付き書式でセルに表示や変則的ですが入力規則でセルに表示、関数でセルに表示がありますが表示セルを見ない限り気づきませんね。

 やはりここはマクロでメッセージボックスをエクセルシート上に表示して知らせる方が一番目立ちそうです。

投稿日時 - 2010-02-26 14:35:40

お礼

早速のアドバイスありがとうございます。
自分のやりたい形の画像をアップしました。
マクロは使ったことがなく全くわからないのですが
こういう感じにしたい場合どうすればいいのでしょうか。
もう少し教えていただけると助かります。
よろしくお願いします。

投稿日時 - 2010-02-26 15:23:48

あなたにオススメの質問