dポイントプレゼントキャンペーン実施中!

ExcelのVBAについて質問です。

VBAを用いて在庫管理表を作成したいと考えております。
やりたいこととして、
1.ある範囲(B列)セルの背景が赤い色がついているときだけ、上書き保存時にメール送信画面(Outlook)が現れる。
(赤背景については、関数を用いて色を付ける予定です。)
2.メール送信画面の本文に赤色のセルの隣のセル(A列:名前)が反映される。



   A      B  
  品名     在庫数
1 リンゴ    100
2 みかん   50(赤背景)
3 ブドウ    200
4 バナナ   40(赤背景)


送信メール
アドレス:○○@××
件名:在庫発注依頼
本文:
 ○○さん
 (みかん)、(バナナ)の在庫がなくなりそうですので、発注をお願いします。
 △△(自分)

説明が分かりにくいかもしれませんが、教えていただけると幸いです。
よろしくお願いいたします。

A 回答 (3件)

できると思います。


頑張ってください。
    • good
    • 1

こんにちは



横からですが・・・

>1.の色がついているときだけというIF文の作製の仕方が分からない。
どうやって色を付けているのかにもよりますが、背景色を取りたいのなら、例えば、

Sub Sample()
Set r = Range("B1:B10")

For Each c In r
 If c.DisplayFormat.Interior.Color = 255 Then
  Debug.Print c.Address
 End If
Next c
End Sub

とすれば、背景色赤のセルだけピックアップします。
(赤がどの赤かわからないので、とりあえず、RGB(255, 0, 0)を拾っています)


>2.の色のついた隣のセルをメール文に起こすやり方
「隣り」ってのは左隣のことと解釈。
上記でセル位置がわかるので、それを利用してもよいですし、当該セル(Rangeオブジェクト)からそのまま、 c.Offset(,-1).Value でも値を取得できます。
    • good
    • 1

できますけど、ここは、


 「代わりに作ってください」
と作業依頼する場所ではありませんので、有料サイトで依頼することを勧めます。

「自分で作りたいけど、作り方が分からない」
という事でしたら、
自分で作成するにあたり、
 ・何が分からないのか
 ・どの点が分からないのか
…を質問文や補足に書くと良いでしょう。
簡単な例を示して教えてくださる方がいらっしゃると思います。
    • good
    • 0
この回答へのお礼

銀鱗さん
誤解を招き申し訳ございません。
ご指摘ありがとうございます。

下記のように、メールを立ち上げることが出来るのですが、
1.の色がついているときだけというIF文の作製の仕方が分からない。
2.の色のついた隣のセルをメール文に起こすやり方(r=の部分)が分からないということで、困っております。

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim msg As String
Dim ws As Worksheet
Dim r As Long
Set ws = Sheets("在庫管理表")
r = ??????
msg = "○○さん"
msg = msg & vbCrLf & ms.Cells(r, "A").Value &"の在庫がなくなりそうですので、発注をお願いします。″ & vbCrLf & "△△"
Const olMailItem = 0
Dim ol As Object
Dim mail As Object
Set ol = CreateObject("Outlook.Application")
Set mail = ol.CreateItem(olMailItem)
mail.Display
mail.To = "〇〇@××"
mail.Subject = "在庫発注依頼"
mail.Body = msg
End Sub



もしよろしければ教えていただけ無いでしょうか。

お礼日時:2021/01/13 14:28

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