ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

EXCEL VBAコミュの質問:繰り返しの中に繰り返し?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
お世話になりますm(__)m

Sub コピペ()

Workbooks.Open Filename:="C:\\■1-7■", ReadOnly:=True

Windows("Book1").Activate
Range("A1").Copy
Windows("■1-7■").Activate
Sheets("★(1)あいうえお★").Select
Range("C1").Select
ActiveSheet.Paste
Range("L3:L56").Copy
Windows("Book2").Activate
Cells(3, ★2★).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Windows("■1-7■").Activate

ChDir "C:\\"
ActiveWorkbook.SaveAs Filename:= _
"C:\\■1-7-1■.xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWindow.Close

End Sub

VBA初心者です。
★と■で囲ったところを繰り返し処理を行いたいのですがよくわかりません。



★(1)あいうえお★は、
1-7を固定した状態で、(2)かきくけこ…(7)まみむめもで(1)あいうえお含め7回繰り返したいです。※
次に
8-14を固定した状態で、(8)やいゆえよ…で7回繰り返したいです。
★2★は、(1)あいうえお→2,(2)かきくけこ→3,…(182)あああああ→183としたいです。
■1-7■は、8-14,15-21…176-182で1-7含め26回繰り返したいです。
■1-7-1■は、8-14-1,15-21-1…176-182-1で1-7-1含め26回繰り返したいです。


何がやりたいかというと、
Book1とBook2を起動した状態で、1-7のブックを立ち上げBook1のA1をコピーし
1-7の(1)あいうえおのC1に張り付け、
さらに(1)あいうえおのL3:L56をコピーしてBook2のcells(3, 2)に張り付け、(2)→cells(3, 3)…(7)→cells(3, 9)とし、
1-7は別名で保存し、閉じる。
次に8-14のブックを立ち上げBook1のA1をコピーし…ということがしたいです。


マクロの記録をつなぎ合わせてコードを書きましたが繰り返しに関してどうすればよいかググっても全くわかりません。上に書いたマクロがもっと短く早くなるという修正も含めてご教授願います。



※(1)あいうえおはシート名ですが、(1)〜(182)のデータはテキスト形式で存在します。

コメント(5)

繰り返し処理は、
For ... Next

Do ... Loop
を使います。
繰り返し処理の中に繰り返し処理を入れることは可能です。

やりたいことを見ると、
ブック数 26
1ブックあたりのシート数 7
だと思うので、

Dim i,j '変数の宣言

For i = 1 to 7
 'Book"1-7"などを開く処理
 'Book1のA1コピー処理の記述
 For j = 1 to 26
  'L3:L56のコピー処理の記述
 Next j
 '別名保存の処理の記述
Next i

でいけると思います。

それからブック名やシート名の一覧があった方が良いと思います。
文面ではよく分からない部分がありますが
このようなことでしょうか?
For i = 1 To 26
   指定BookをOpen
   Book1をActive
   A1セルをCopy
   指定BookをActive
   For j = 1 To 7
     指定SheetをSelect
     C1セルにPaste
     範囲L3:L56をCopy
     Book2をActive
     指定セルに値の貼り付け
   Next j
   指定BookをActive
   指定Bookを指定BookNameで保存
   指定BookをClose
Next i

>繰り返しに関してどうすればよいかググっても全くわかりません
どのようなキーワードで検索したか分かりませんが
Googleであればかなりの件数がヒットすると思いますよ
そのなかには繰り返し(ループ)はどうしたらよいか
詳しく書いてあるサイトもあったと思います
また、サンプルマクロを載せてあるサイトもあると思いますよ

>上に書いたマクロがもっと短く早くなるという修正
これに関しては自分でやってみたほうがよいと思います
というより初心者であるならば、まずコードを完成させ
指定通りの動きが出来るところまで持っていくほうが先決だと思います
回答ありがとうございますm(_ _)m


このマクロは機能します。

ブック名一覧は
1ー7
8ー14
9ー21
22ー28

176ー182
シート名一覧は
(1)156
(2)832
(3)461
(4)098
(5)133

(182)798

です。
>このマクロは機能します。
現在のマクロが機能するのであれば
初心者のうちは、多少コード自体が長かったり
不恰好であっても、まずはコードの完成を目指すほうが
よいと私は思います
完成してから、ここを削ってみるとどうなるのかなど
試行錯誤して、「こう書いた(変えた)方が短くなる」ということを
だんだん勉強していくほうがよいと思います


まず、繰り返し処理をまず理解しないと無理でしょうから
今回使うのはFor文だと思うので、まずFor文を検索して
理解するようにしたほうがよいと思います
上でも書きましたが、サンプルマクロがあるサイトもありますので
試してみるのもよいと思います
> マリ男さん

For文で検索了解しましたわーい(嬉しい顔)

ありがとうございます☆★
またお世話になると思いますがよろしくお願いしますm(_ _)m

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

EXCEL VBA 更新情報

EXCEL VBAのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。