• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【EXCEL2007】VBAで変数に代入したい)

【EXCEL2007】VBAで変数に代入したい

このQ&Aのポイント
  • 新しいシートを複数挿入して、指定のシート名に変数を使って一括で指定する方法について教えてください。
  • シート名を一つずつ手動で指定するのではなく、変数を使って一括で指定する方法について教えてください。
  • VBAを使用して、新しいシートを複数挿入する際に、変数を使ってシート名を一括で指定する方法を教えてください。

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.3

同じく「配列関数(Array関数)」を使うやり方です。 まぁ、書き方色々と言うことで。 Sub Sample() Dim SHName As Variant     SHName = Array("北海道", "青森")     For i = LBound(SHName) To UBound(SHName)         Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = SHName(i)     Next i End Sub UBound(配列)で要素の数を調べることができるので、それを利用しています。 要素数の開始は0なので、正確にはUBound(配列)+1が要素数ですね。 開始位置はLBound(配列)で確認します。通常は「0」です。 ちなみに、#2さんの書き方だと「シートを追加⇒名前を変更」と言う処理、 上記の書き方だと、「名前を指定してシートを追加」と言う処理。 この違いです。 この辺は「好み」ですので、「ご自身好み」の書き方を見つけてくださいませ。 私の好みをザックリ紹介させていただくと、 「シートを追加して終わる処理はあり得ない=追加したシートに何らかの操作をする」 と言う考え方の基に、追加するシートをそのまま変数に持ってしまう書き方。 Sub Sample2() Dim NewSH As Worksheet Dim SHName As Variant     SHName = Array("北海道", "青森")     For i = 0 To UBound(SHName)         Set NewSH = Sheets.Add(after:=Worksheets(Worksheets.Count))             With NewSH                 .Name = SHName(i)                 .Range("A1") = SHName(i)                 ' その他の操作             End With     Next i End Sub こんな感じです。 参考までにどうぞ。

cat-cat14
質問者

お礼

仕事が忙しくなり、お礼が遅れてしまいました。 申し訳ありませんでした! とても詳しく書いていただき、ありがとうございます。 複数シートを選択するときに使ってたArrayが、 変数を指定するときにも使えるなんて! と、こんなレベルです^^; LBound・UBound関数も、はじめて知りました! なるほど、便利ですねー。 たくさん処理するときは非常に助かります♪ tsubuyuki様がいつも使われている方法も、 参考にさせていただきたいと思います。 大変勉強になりました、ありがとうございました!!!

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

配列に一括設定しては如何でしょうか。 Dim 変数A, st 変数A = Array("北海道", "青森", "秋田", "沖縄") For Each st In 変数A Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = st Next

cat-cat14
質問者

お礼

ご教授いただき、ありがとうございます! For EachがRangeに使えるのは知ってたんですが、 こういう使い方もできるんですね! 勉強になりました! ありがとうございました~!!

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.1

配列変数を使います。 Sub tst() Dim a(47) a(1) = "北海道" a(2) = "青森"   '....以下同様に a(47) = "沖縄" For i = 1 To 47 Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = a(i) Next i End Sub

cat-cat14
質問者

お礼

ご教授いただき、ありがとうございます! 配列変数なるものは知らなかったので、 勉強になりました。 ただ、a(1)の部分も簡略化出来たら…と思います。 さすがに47シートはないですが、 結構なシート数があるもので… ありがとうございました!

関連するQ&A

専門家に質問してみよう