[[20230920133657]] 『マクロでBody1,2,3…を配列やループにするには』(勉強中) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロでBody1,2,3…を配列やループにするには』(勉強中)

表題の件教えてください。

マクロでメールを自動作成しようとしています。
Option Explicitを先頭に付けると、下記で「変数が定義されていません」と出てしまいます。

        Body1 = 設定wb.Worksheets("設定").Cells(6, 3)
        Body2 = 設定wb.Worksheets("設定").Cells(7, 3)
        Body3 = 設定wb.Worksheets("設定").Cells(8, 3)
     〜省略〜
        Body8 = 設定wb.Worksheets("設定").Cells(13, 3)

変数を定義する際に、Body1, Body2, Body3, … Body8と全て(8回分) を Dim Body1 As String…と定数定義しないで、
配列なりループなりで1つで宣言できないかと考えていますが表現方法が分かりません。ご教授いただければ幸いです。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 そもそも
 Body1, Body2, Body3 〜 Body8 ではなく、
 Body(1), Body(2), Body(3) 〜 Body(8) と配列にすればいいのでは。

(通りすがり) 2023/09/20(水) 13:58:16


ありがとうございます。
変数設定は下記にするという事でしょうか↓
 Dim Body(8) As String

Bodyも()で囲ってみましたが、ここは一つずつ書く事になりますか?

        Body(1) = 設定ws.Cells(6, 3)
        Body(2) = 設定ws.Cells(7, 3)
        Body(3) = 設定ws.Cells(8, 3)
        Body(4) = 設定ws.Cells(9, 3)
        Body(5) = 設定ws.Cells(10, 3)
        Body(6) = 設定ws.Cells(11, 3)
        Body(7) = 設定ws.Cells(12, 3)
        Body(8) = 設定ws.Cells(13, 3)

下記のように、本文1行ずつ、改行したり、途中で図を貼ったり…等色々操作したいので、
Body(1)からBody(8)までをループでは出来ないのでは? 等、息詰まっております。

        .TypeText Body(1)
        .TypeText Chr(13)

        .TypeText Body(2)
        .TypeText Chr(13)
        .TypeText Chr(13)

      図を貼る

        .TypeText Body(3)
            以下省略

(勉強中) 2023/09/20(水) 15:11:06


 よく分かってませんが、例えば、

 For i = 1 To 8
    Body(i) = 設定ws.Cells(i + 5, 3)
 Next i

 ではダメなのですか?

(通りすがり) 2023/09/20(水) 15:32:53


Variant型で良ければ2行です。

    Dim body
    body = Range("C6:C13")

bodyは2次元配列になっています。

読み出しのサンプルです。BookとかSheetは必要に応じて指定してください。

Sub a()

    Dim body
    body = Range("C6:C13")

    Dim i As Long

    For i = LBound(body) To UBound(body)
        Debug.Print body(i, 1)
    Next

End Sub

(ゆたか) 2023/09/20(水) 15:47:23


皆さま、ありがとうございます。
教えて頂いたコード参考に、勉強してみます。
(勉強中) 2023/09/20(水) 16:10:19

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.