dポイントプレゼントキャンペーン実施中!

EXCELマクロ ループする方法についてです。

お世話になります。
教えてください。

EXCELのマクロについてです。

Sheet1のB4から下方に30程度の名前が並んでいます。
名前は毎回変わり、人数も変わります。
他に「原本」というSheetがあります。

行いたいことは、原本のシートをコピーしてシートの名前を
Sheet1のB4から下に順番に変更していきたいのです。

当初、B4からの順番に新しいSheetを作りSheetの名前を変更して
原本からコピー(書式、数式、列幅、値等)しようと試みましたが
数式や値はコピーできましたが列幅などがコピーできません。

そこで原本を「シートのコピー」で新しいコピーした
Sheetを作り名前をB4に変更する。
それをB列が空欄になるまでループさせる。という方法を
考えましたが、「空欄になるまで」という
記述がわかりません。




教えていただければ助かります。
よろしくお願いします。

A 回答 (2件)

定石の一つとして憶えておいてください。



sub macro1()
 dim h as range
 worksheets("Sheet1").activate
 for each h in range("B4:B" & range("B65536").end(xlup).row)
  worksheets("原本").copy after:=worksheets(worksheets.count)
  activesheet.name = h
 next
end sub



#バリエーション
sub macro2()
 dim r as long, h as range
 r = worksheets("Sheet1").range("B65536").end(xlup).row
 for each h in range("B4:B" & r)
 :
 以下同じ


#バリエーション
sub macro3()
 dim r as long, i as long
 r = worksheets("Sheet1").range("B65536").end(xlup).row
 for i = 4 to r
  worksheets("原本").copy after:=worksheets(worksheets.count)
  activesheet.name = worksheets("Sheet1").cells(i, "B")
 next i
end sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
最終行を見つけるとは考えませんでした。
大変 勉強になりました。

ありがとうございました!

お礼日時:2011/07/11 21:57

一例ですが


>それをB列が空欄になるまでループさせる。という方法を
>考えましたが、「空欄になるまで」という
そのままをコードにすれば

Range("B4").Activate
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Activate
'ここでにご希望の処理
Loop

こういった形になります。
B4セルをアクティブにして
ひとつづつ下方向へアクティブセルを移動
空白になったらLoopg終了
といった考え方です。
コードとしてはあまり紹介できない形ですが
参考になりますでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
大変参考になりました。

お礼日時:2011/07/11 22:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!