
お世話になっております。
マクロのコードについての相談です。
シート名を「リスト」シートから取得して同じシートを複数作成するマクロを作成していますが、
上手く動作しなかったため、ご教授頂きたく質問いたしました。
「1」シートを複製し、「リスト」シートから取得した値をシート名にするマクロを組んでいました。
「リスト」シートの最終行を取得させて繰返し処理をさせると、実行エラー「1004」アプリケーション定義またはオブジェクト定義のエラーが発生し、「1(2)」シートが作成されてしまいます。
この2つの問題を発生させないように改善したいため、お力添えいただいだけると幸いです。
よろしくお願いいたします。
下記現状のコードとなります。
Sub シート複製()
Worksheets("リスト").Activate
For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
Sheets("1 ").Copy after:=Sheets(Sheets.Count)
Range("O5") = Sheets("リスト").Cells(i, "B")
ActiveSheet.Name = Sheets("リスト").Cells(i, "C")
Next i
End Sub
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
No.1さんのご回答にあるとおり、C列にシート名に使用できない文字を含む名称が入っていませんか?
たとえば、[shName1] とか、3\四半期とか。
https://qiita.com/RelaxTools/items/d173d0f944243 …
No.2
- 回答日時:
Range("O5") = Sheets("リスト").Cells(i, "B")
ActiveSheet.Name = Sheets("リスト").Cells(i, "C")
をやめて
ActiveSheet.Name = Sheets("リスト").Cells(i, "B").Value
でいいのでは?
Range("O5")とかC列とか、なんで登場するのか謎です。
早々のご回答ありがとうございます。
>Range("O5")とかC列とか、なんで登場するのか謎です。
これらが登場するには理由がありまして、Range("O5")については
”1”のシートのRange("O5")に値が入力されると関数が動作するようになっていることとC列に関してはC列の値を使ってシート名を変更しようと考えていました。こちらに関してはいんちょ様の仰る通り初めからどちらかに統一するべきだと思いますので、変更しようと思います。
No.1
- 回答日時:
こんにちは
>この2つの問題を発生させないように改善したいため
問題は一つではないのでしょうか?
>「1(2)」シートが作成されてしまいます。
ご提示のコードを実行しているのでしょうから、問題とは思えませんが?
どこでエラーになっているのか不明ですけれど、想像するところ
>ActiveSheet.Name = Sheets("リスト").Cells(i, "C")
で発生しているのではないかと、勝手に想像しました。
もしそうであるなら、以下あたりが怪しそうに思います。
・重複するシート名(=既に存在する)にしようとしている
・シート名に使用できない文字を含む名称にしようとしている
エラー発生時に確認してみてください。
違う所でのエラーの場合は、この回答は誤答なので、無視してください。
原因がわかれば、それを回避するようなコードを追加すれば宜しいと思います。
早々のご回答ありがとうございます。
多くのアドバイスを頂きありがとうございます。
実際に動作させて確認するとfujillin様の仰っている部分で
エラーが発生しています。
もう少し試行錯誤して回避できるようなコードを考えてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
エクセルVBA Ifでシート名が合...
-
Excel チェックボックスにチェ...
-
実行時エラー'1004': WorkSheet...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA:複数の特定のグラフ...
-
【ExcelVBA】全シートのセルの...
-
【ExcelVBA】動的にボタン、ボ...
-
実行時エラー1004「Select メソ...
-
【VBA】全ての複数シートから指...
-
エクセル・マクロ シートの非...
-
excelのマクロで該当処理できな...
-
VBA 入力月で該当シートを選択...
-
【excel・vba】特定文字列の1行...
-
【Excel VBA】Worksheets().Act...
-
同じ作業を複数のシートに実行...
-
VBA 指定した回数分、別シート...
-
Excel VBA リンク先をシート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
エクセルで通し番号を入れてチ...
-
VBA 検索して一致したセル...
-
XL:BeforeDoubleClickが動かない
-
VBA 指定した回数分、別シート...
-
VBAマクロでシートコピーした新...
-
シートが保護されている状態で...
-
ブック名、シート名を他のモジ...
-
【VBA】全ての複数シートから指...
-
別のシートから値を取得するとき
-
ExcelのVBAのマクロで他のシー...
-
Excel チェックボックスにチェ...
おすすめ情報