• ベストアンサー

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

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

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

  • ベストアンサー
  • silverfd
  • ベストアンサー率57% (204/356)
回答No.4

私なら、イベントプロシージャ(マクロの一種)で発注メール自体を飛ばしちゃいますね。 もはや「忘れる」可能性すら根絶できますので、一番合理的でしょう。 まず、現残が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
robin1124
質問者

お礼

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

その他の回答 (3)

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.3

こんにちは #1補足です。 後からアップされた画像のイメージでよいなら、#2の方のアドヴァイスをもとに実現できますね。 #2の方の式を結合されたA3セルに条件(例えばチェックするセル範囲)やイメージ(条件付き書式で塗りつぶしとフォントを指定)に合うように編集すればよいです。 A3セル例) =IF(COUNTIF([範囲],"<2")>0,"注文はしましたか?","") ※[範囲]はチェックするセルを指定します(下記参照)。 [範囲]例)  $B$7:$B$* [*印に末尾の行番号を指定する]  $B:$B [B1~B6セルに値 1 が無いこと]  条件付き書式では、「セルの値が」を「数式が」に選択を変更して次の式を設定し、フォントとパターンの色を選択して下さい。 =$A$3="注文はしましたか?"  

robin1124
質問者

お礼

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

  • u-bot
  • ベストアンサー率58% (1736/2988)
回答No.2

No.1さんの書かれている方法が一番判りやすいと思います。 ただ私はマクロを知らないので代替案としてはA1~A7に在庫数が入力されていた場合は =IF(COUNTIF(A1:A7,"<2")>0,"注意:在庫数が1の項目があります","在庫は適正です") のようなセルを目立つ場所に文字サイズを大きくして挿入します。 あとどのセルが1以下になったのかすぐに判るように在庫数の欄には条件付き書式で文字か背景の色が目立つようにしますね。

robin1124
質問者

お礼

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

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.1

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

robin1124
質問者

お礼

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

関連するQ&A

専門家に質問してみよう