質問: worksheets("11").range("ai24").value ..... ※各シートのセルadまで延々とつづくマクロを作成しました。 vbaの勉強不足は重々承知しております。もっと簡潔にできるのでしょうか。 ご教示いただけますと幸いです。
回答: no.2です。 >「with worksheets("2集計").cells(i + 23, "c")」 ←この部分は、どういう意味になるのでしょうか for ~ next で 1~45(回)ループさせるコードなので >worksheets("2集計").cells(i + 23, "c") の「i+23」 → 24 ~ 68 になりますね。 >cells(行番号, 列番号) という表記になります。("c"はそのままc列 → "c" の代わりに 3 でも構いません) すなわちc列24行目以降に順次、シート名「1」~「45」までの「aj1」セルの値を代入!というコトになります。 ※ シート名は文字列にしなければならないので、 >sn = i とし、 > worksheets(sn) のようにしています。 尚、 worksheets(i) としてしまうと 仮に worksheets(1)の場合はシート見出しの一番左側のシートになってしまいます。 次に >また、2集計シートの e24セル~e68セル に「1~45」シートの aj24 の数値を・・・ お礼欄にある空白行に >.offset(, 2) = worksheets(sn).range("aj24") を追加すればいけると思います。 質問文内で一つ不明な点があります。 >※各シートのセルadまで延々とつづくマクロを作成しました。 とは列方向に関してもループが必要なのでしょうか? 質問文では行方向だけのループで済むはずなのですが。m(_ _)m