色の知識で人生の可能性が広がる!みんなに役立つ色彩検定 >>

VBAの質問です
msg = ws.Cells(r, "A").Value & "日に" & ws.Cells(r, "F").Value & "が" & ws.Cells(r, "C").Value & "になりました"
ここの部分でF列に文字があるのにメールに反映されません
なぜでしょうか?

Private Sub Worksheet_Change(ByVal Target As Range)
'メッセージ作成
Dim msg As String
Dim ws As Worksheet
Dim r As Long
Set ws = Sheets("受失注履歴") '対象シート

r = ws.Range("A" & Rows.Count).End(xlUp).Row 'A列最終行
msg = ws.Cells(r, "A").Value & "日に" & ws.Cells(r, "F").Value & "が" & ws.Cells(r, "C").Value & "になりました"
'メール作成
If Intersect(Target, Range("D1:D1000")) Is Nothing Then
Exit Sub
End If
Const olMailItem = 0
Dim ol As Object
Dim mail As Object
Set ol = CreateObject("Outlook.Application") 'Outlook
Set mail = ol.CreateItem(olMailItem) 'メール作成
mail.Display '表示
mail.To = "to@hoge.com'宛先"
mail.CC = "cc1@hoge.com;cc2@hoge.com" '宛先が複数ある時は";"で区切って複数指定
mail.Subject = "件名" '件名
mail.Body = msg '本文
End Sub

質問者からの補足コメント

  • 回答ありがとうございます
    何も表示されませんでした

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/12/21 17:46
  • 同じです
    あってます

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/12/21 17:47
  • F列のみ表示されませんでした

    No.4の回答に寄せられた補足コメントです。 補足日時:2021/12/21 18:11
  • 結合はしてないです

    No.6の回答に寄せられた補足コメントです。 補足日時:2021/12/21 18:45
教えて!goo グレード

A 回答 (8件)

ダミーでも表示されないセルを選択し、数式バーに何が表示されてるかわかるような構図で画像を位置合わせして提示されたら良かったのかも。



コードだけではミスってるとは考えにくいですし。
例えばF列の値ではなく任意の文字列を連結したら正常なのは、既に確認されてますよね。
    • good
    • 0

debug.print ws.Cells(r, "F").Text


として、内容が表示されるかどうか確認してみてください。
ws.Cells(r, "F").Textはそのセルのみたままの表示です。

もし、表示されれば、ws.Cells(r, "F").Valueは空白だが、
ws.Cells(r, "F").Textは表示されていることになります。
(その場合、その理由は書式設定等を確認しないとわかりません)

もし、ws.Cells(r, "F").Textがなにも表示されないなら
最終行であるとされるrの値があなたが期待する最終行でない可能性があります。
debug.print r
を実行し、rの値を表示し、期待する行かどうか確認してください。
    • good
    • 0

#3様の回答を参考に


msg = ws.Cells(r, "A").Value & "日に" & ws.Cells(r, "F").MergeArea(1, 1).Value & "が" & ws.Cells(r, "C").Value & "になりました"
とか?
この回答への補足あり
    • good
    • 0

同じなのですね


A列は数式で""になってませんか?
""が無い列を対象にしてみるとか、、何処か分からないけれど 例えば
r = ws.Range("F" & Rows.Count).End(xlUp).Row とか?
    • good
    • 0

debug.print ws.Cells(r, "F").Value


debug.print msg
のどちらも何も表示されなかったのですか。
念のため
debug.print r
としてrが最終行なので、
そのr行のF列はデータが表示されてますか。
そのr行のA列はデータが表示されてますか。
この回答への補足あり
    • good
    • 0

F列って単独?


E列とかと結合セルになってたり?
で右寄りに表示させているからF列に値があるとの勘違い?

なんて初級レベルなジジィがやりそうなミスはないですよねぇ~。(恥)
    • good
    • 0

こんにちは


ステップインで確認しては?
A列最終行は他の最終行と同じなの?
Worksheet_Changeトリガーは合っていますか?
この回答への補足あり
    • good
    • 0

mail.Body = msg '本文


のあとに
debug.print ws.Cells(r, "F").Value
debug.print msg
として、本当にあるかどうか、確認されてはどうでしょうか。
この回答への補足あり
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング