- ベストアンサー
エクセルVBAでのfor文
エクセルVBAのfor文についての質問です A列のセルに抽出したタイトルが貼り付けられている状態で、そのA列のセルの名前で新規シートを作りたいのですが ・抽出される数が条件によって違うので、A列のセルの数が固定ではない ・1つの名前につき1つの新規シートの作成で、重複して作らない 重複してしまうとシート数が数百単位になってしまい、メモリ不足になると思うので重複は削除して作りたいのですが、この場合のfor文の宣言はどうなるのでしょうか? 抽出される数が条件に応じて変わるのでいまいち分かりません。 (今までfor文は3や5などの指定数での経験しかありません) どうかお助けください
- みんなの回答 (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
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
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
お礼
有難う御座います まだまだ勉強中なもので助かりました
お礼
有難う御座います ちょっと変えてみたら無事動きました、とても助かりました