14歳の自分に衝撃の事実を告げてください

エクセルVBAのfor文についての質問です

A列のセルに抽出したタイトルが貼り付けられている状態で、そのA列のセルの名前で新規シートを作りたいのですが

・抽出される数が条件によって違うので、A列のセルの数が固定ではない
・1つの名前につき1つの新規シートの作成で、重複して作らない

重複してしまうとシート数が数百単位になってしまい、メモリ不足になると思うので重複は削除して作りたいのですが、この場合のfor文の宣言はどうなるのでしょうか?
抽出される数が条件に応じて変わるのでいまいち分かりません。
(今までfor文は3や5などの指定数での経験しかありません)
どうかお助けください

A 回答 (2件)

一例です。


sheet1のA列にタブ名が入力されているとしています。

Sub sample()
With Sheets("sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
flg = True
For j = 1 To Sheets.Count
If Sheets(j).Name = .Cells(i, 1) Then flg = False
Next
If flg Then
Sheets.Add(, Sheets(Sheets.Count)).Name = .Cells(i, 1)
End If
Next
End With
End Sub
    • good
    • 0
この回答へのお礼

有難う御座います
ちょっと変えてみたら無事動きました、とても助かりました

お礼日時:2011/10/20 20:28

whileとかLoopを使います。


こんな感じ。

i = 1
Do While ActiveSheet.Cells(i, 1) <> "" 'セルが空なら終わり
 title = ActiveSheet.Cells(i, 1)
chofuku = false
 For j = 1 to i-1
  If title = ActiveSheet.Cells(j, 1) Then
   chofuku = true
   Exit For
  End If
 Next
 If Not chofuku Then
  シートを作ってなんとかかんとか
 End If
 i = i + 1
Loop
    • good
    • 0
この回答へのお礼

有難う御座います
まだまだ勉強中なもので助かりました

お礼日時:2011/10/20 20:26

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


おすすめ情報