• 締切済み

エクセルのシート自動作成

アサヒライジング   ****://db.netkeiba.com/horse/2003102338/ イクスキューズ    ****://db.netkeiba.com/horse/2004100763/ フレンチビキニ    ****://db.netkeiba.com/horse/2002100626/ 例えば競争馬リストとゆうシートを作成し上記のようなリストがあります。 上記では3頭のアドレスが表示されていますが3頭分の1頭ずつのシートを自動で作成する方法は無いでしょうか。 ActiveWorkbook.Worksheets.Add.Name = "uma1"でumaとゆう名のシートが挿入される事は分かりましたが。

みんなの回答

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.2

3と直接書きましたが通常件数が不明のときはRange("A65535").end(xlup).rowを用います。これで頭数がいくつでも大丈夫なはず。 もうひとつはNextの前に処理を書きます。通常は別のSubにその別処理を記述してNextの前の行からCallなどを用いて呼び出すと読みやすいかと。

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.1

Sub シート3枚() Set st = ActiveSheet For i = 1 To 3 ActiveWorkbook.Worksheets.Add.Name = st.Range("A" & i) Next End Sub A1からA3にリストがあると仮定しています。 ポイントは挿入されるとRangeの参照するシートが変動してしまわないように変数stに今のシートを覚えさせています。

dachiya
質問者

お礼

回答ありがとうございます。早速やってみました。見事にシートが自動作成されました。 もう二つお聞きしても良いでしょうか。 自動作成の際に競馬の出走馬が18頭フルのときは For i = 1 To 18 で18頭分シートが作成されますが、例えば出走馬が12頭のときに12頭分のシート作成後に処理を終了させる方法と、ひとつのシートの自動生成後に別の処理をしてその後に次のシートを作成する方法はないでしょうか。

関連するQ&A