質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

823閲覧

VBA  改行について

koko2

総合スコア21

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/11/08 10:49

編集2022/11/13 11:40

前提

Excel VBAにてOutlookメールを作成したい。

発生している問題・エラーメッセージ

どのように改行コードを入れたらいいかがわかりません。

試したこと

vbLfなどを色々と試しましたが、一行で表示されてしまいます。
Dim i As Long
Dim LastRow As Long
LastRow = Range("A1048576").End(xlUp).Row
For i = 3 To LastRow
If Cells(i, 3) = "S" Then
objMail.HTMLBody = objjMail.HTMLBody & "注意事項" & vbLf & "ご利用いただく際の注意事項について説明します。" & vbLf & "
ご利用いただくにあたっての注意事項の詳細は <a href=""https://www.google.co.jp/"">こちら1</a>" & vbLf & "
その他サービスをご利用いただくための注意事項は<a href=""https://www.google.co.jp/"">こちら1</a>"
ElseIf Cells(i, 3) = "M" Then
objMail.HTMLBody = objjMail.HTMLBody & "注意事項2" & vbLf & "ご利用いただく際の注意事項について説明します。" & vbLf & "
ご利用いただくにあたっての注意事項の詳細は <a href=""https://www.google.co.jp/"">こちら2</a>" & vbLf & "
その他サービスをご利用いただくための注意事項は<a href=""https://www.google.co.jp/"">こちら2</a>"
Else
objMail.Body = strBody
objMail.HTMLBody = objjMail.HTMLBody & "注意事項3" & vbLf & "ご利用いただく際の注意事項について説明します。" & vbLf & "
ご利用いただくにあたっての注意事項の詳細は <a href=""https://www.google.co.jp/"">こちら3</a>" & vbLf & "
その他サービスをご利用いただくための注意事項は<a href=""https://www.google.co.jp/"">こちら3</a>"
End If
Next

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

コメントの補足です。VBAで文字列を二行以上書くときは少々めんどくさいルールがあります。

VBA

1objMail.HTMLBody = objMail.HTMLBody & "注意事項 <br>" & _ 2 "ご利用いただく際の注意事項について説明します。" 3 ElseIf Cells(i, 3) = "M" Then 4 objMail.HTMLBody = objMail.HTMLBody & "注意事項2 <br>" & _ 5 "ご利用いただく際の注意事項について説明します。 > "

投稿2022/11/09 00:17

編集2022/11/11 04:26
pig_vba

総合スコア807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koko2

2022/11/09 08:20

pig_vbaさん、ご丁寧に説明頂きありがとうございました。試しに上記”該当ソースコード”の欄を修正してみましたが黄色いマーカー部分が出てしまいます。オブジェクトが必要とのエラーメッセージでした。コード上に何かが不足しているのでしょうか。ずっとあれこれ修正してみましたが黄色いマーカー部分が消えません。
pig_vba

2022/11/09 08:45

私の環境でA列に15行ほど適当に文字入力して実行してみましたが正常終了できてます。何行目でエラーになっていますか?
koko2

2022/11/10 06:43 編集

objMail.HTMLBody = objjMail.HTMLBody & "注意事項 <br> _ ご利用いただく際の注意事項について説明します。""" ここの部分がエラーとなります。
pig_vba

2022/11/10 07:32 編集

objMail.HTMLBody = objjMail.HTMLBody & "注意事項 <br>"& _ "ご利用いただく際の注意事項について説明します。" ですよ。修正済み質問文の方は正しく修正されているように見えますが…?
koko2

2022/11/10 07:55

コメントありがとうございました。すみませんが画像を添付いたしました。Module1の値がpig_vbaさんと同じか見てもらえますでしょうか。
pig_vba

2022/11/10 08:20

objMail.HTMLBody = objjMail.HTMLBody & ...            ↑ もしかして、[objMail.HTMLBody & ]のtypo説ないですかね?
koko2

2022/11/10 11:10 編集

コメントありがとうございました。再作成してみましたらできました! 出来たと思ったら、マクロを実行した結果でoutlookに表示されるもが全部その他の注意事項3が選択されてしまいました。 そのためDimをVariantにしてみましたがだめでした。 メールシートのデータが1行だけならうまくいきましたが、複数行にはすべてElseになりました。
pig_vba

2022/11/10 14:05

二週目以降だけがおかしいという事なら、activesheetが変わってるんじゃないですかね? 一旦横着せずにcellsとかの省略してる部分のワークシートを指定してみてください。 個人的には最初のうちに set ws1=thisworkbook.sheets(1)みたいに変数に格納しておいて、ws1.cells()のように呼び出せるようにすることをオススメします
koko2

2022/11/11 03:02 編集

どうもありがとうございました。一つずつ修正してみたら、うまく動きました!今回はおかげで、問題が解決しました。本当に感謝です。
guest

0

HTMLなら、改行は"<br>"でしょう

投稿2022/11/08 11:11

編集2022/11/08 11:12
y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koko2

2022/11/08 12:42 編集

コメントありがとうございました。<br>とすべきところを、< br >としていたのが違っていたようです。どうもありがとうございました。 ただ objMail.HTMLBody = objjMail.HTMLBody & "注意事項" <br>ご利用いただく際の注意事項について説明します。<br>ご利用いただくにあたっての注意事項の詳細は <a href=""https://www.google.co.jp/"">こちら1</a><br>その他サービスをご利用いただくための注意事項は<a href=""https://www.google.co.jp/"">こちら1</a>"と一行で記載すると問題ないのですが、長すぎるので<br>でリターンして折り返すと<br>の後ろに " が自動で付きエラーとなります。
pig_vba

2022/11/08 12:54

VBAは2行以上の折返しは _が必要ですよ
koko2

2022/11/08 15:36

コメントありがとうございました。試しに文を短くして半角スペースとアンダーバーを入れて実行してみたのですがコンパイルエラーとなります。補正候補:ステートメントの最後とのメッセージが出て、色々と修正してみましたがうまくいきませんでした。 そのため、また元に戻して一行で書き直したら今度は実行時エラー424、オブジェクトが必要です。となり、自分のコードをもう一度見直しが必要みたいです。 Dim i As Long Dim LastRow As Long LastRow = Range("A1048576").End(xlUp).Row For i = 3 To LastRow If Cells(i, 3) = "S" Then objMail.HTMLBody = objjMail.HTMLBody & "注意事項 <br> _ ご利用いただく際の注意事項について説明します。""" ElseIf Cells(i, 3) = "M" Then objMail.HTMLBody = objjMail.HTMLBody & "注意事項2 <br> _ ご利用いただく際の注意事項について説明します。 > """ Else objMail.Body = strBody objMail.HTMLBody = objjMail.HTMLBody & "注意事項3 <br> _ ご利用いただく際の注意事項について説明します。""" End If Next
pig_vba

2022/11/09 00:13

説明が不足していましたね。VBAでは文字列を二行以上続けて記述することは禁止されています。 なので一行ごとに""でくくり、[ _]結合子で一行分と認識させながら文字列同士を&で結合しなければなりません。ここじゃ書きにくいので回答枠で補足します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問