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

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

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

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

解決済

VBA  改行について

koko2
koko2

総合スコア21

VBA

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

2回答

0グッド

0クリップ

396閲覧

投稿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

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答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

総合スコア650

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

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 編集

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

0

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

投稿2022/11/08 11:11

編集2022/11/08 11:12
y_waiwai

総合スコア86013

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

VBA

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