- ベストアンサー
VBA シート操作
エクセル2002使ってます。 VBAにて雛型のシートを27枚コピーし、集計用のシートに入力されている名簿の名前の通りにシート名を変更したいと思い、式を組みました。 しかし、雛型のコピーまではできましたが、シート名を上手く変更できません。 シート名を変更したいシートは雛型(2)~雛型(28)の名前で、ブックの一番左から並んでます。 これをシート名変更するにはどうすればいいでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
追加でシートを作りそのタイミングでシート名変更、を27回繰り返しする。 か、 シート作る繰り返しを27回した後、シート名変更の繰り返しを27回する。 式とは?。 上手く行かないとは?。 シート名を保持するプロパティーがわかればできそうな話だが?。 例えば、 3回目に追加したシートが3番目位置になってないからセル3番目の値で変更しても結果おかしくなる、とかロジックまで考えないといけない状態か?。 上手くいかない、だけではなんとも言えない。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17070)
28枚と言えばちょっと多数でプログラムで繰り回してシート名を設定することになろう。 現状在るこのブックのシートの特定は (1)インデックス番号で (2)名前で (3)NextやPreviousで。Activesheetで しかないのだ。特に(1)と(2)だ。このへんをしっかり掴んでいますか? 対応が簡単なのは(1)だが、並び順に依存する、危険性がある。 これを我慢するなら、シートの2行目から設定したいシート名を順序を崩さず入力しておいて 例Sheet1のB列にB2から、新シート名を Sheet21 Sheet22 Sheet23 ーー 変更後シート名データのある、Sheet1はタブ的に最左に置いておく Sub test01() Dim sh As Worksheet i = 1 For Each sh In Worksheets MsgBox sh.Index If sh.Index <> 1 Then 'Sheet1の処理はしない MsgBox sh.Name sh.Name = Worksheets("Sheet1").Cells(i, "B") End If i = i + 1 Next End Sub
お礼
間違えてベストアンサーにできませんでした。スミマセン。 今日、式を見直してみてなんとか名前変更できました。 初め(1)の方法でやっていたのを(2)にしてみたら上手くいきました。ありがとうございました。
お礼
説明不足でスミマセン。 現在携帯からしかログインできないのでVBAの式載せられませんでした。 初めにシートを27枚コピーした後に一括で名前を変更していく式を作ったのですが、名前変更の式で対象シートの指定をSheets(3)などのようにインデックスで指定したため上手くいかなかったみたいです。 シート名を指定する式に変えたところ上手くできました。 ご指摘ありがとうございました