• ベストアンサー

エクセルVBAでのfor文

エクセルVBAのfor文についての質問です A列のセルに抽出したタイトルが貼り付けられている状態で、そのA列のセルの名前で新規シートを作りたいのですが ・抽出される数が条件によって違うので、A列のセルの数が固定ではない ・1つの名前につき1つの新規シートの作成で、重複して作らない 重複してしまうとシート数が数百単位になってしまい、メモリ不足になると思うので重複は削除して作りたいのですが、この場合のfor文の宣言はどうなるのでしょうか? 抽出される数が条件に応じて変わるのでいまいち分かりません。 (今までfor文は3や5などの指定数での経験しかありません) どうかお助けください

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.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

yukari08
質問者

お礼

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

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

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

yukari08
質問者

お礼

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

関連するQ&A