• ベストアンサー

マクロでシート名「1」から繰返し処理したい

VBAの繰り返し処理でWorksheets名が「1」から「100」の時はどう書くのでしょうか。 (「集計表」など他のシートも混じっているので左から1番目~100番目ではない) For i = 1 To 100 Worksheets(i).Select とすると名称「1」のシートでなく最左1番目からと見なされます。 Worksheets("i").Select と書くと「i」名のシートと見なされ変数と認識されません。 「積算1」の様に他の字を混ぜると不思議と認識されます。 Worksheets("積算" & i ).Select  の時はOKでした。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

要は下記を実行すればわかります。 Sheet1-->1 Sheet2-->2 Sheet3-->3 とシート名変更。 ーーー 下記を実行。 Sub test01() For i = 1 To 3 n = Trim(Str(i)) Sheets(n).Select MsgBox "シート名確認" Next i End Sub

miine
質問者

お礼

imogasiさんには以前も確かお世話になったような・・。 また別の面から有り難うございます。

その他の回答 (4)

noname#135138
noname#135138
回答No.4

確実な方法です。 for ~ next にしていませんが、改造してください。 Dim i As Long Dim i_Txt As String i = 1 i_Txt = Str(i) Worksheets(Right(i_Txt, Len(i_Txt) - 1)).Select

miine
質問者

お礼

たびたび有り難うございます。 やってみます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 For i = 1 To 100  Worksheets(CStr(i)).Select Next なお、Str関数は、もともと、VBの関数で、スペースが入ってしまいます。その場合は、Trim を使えばよいのです。

miine
質問者

お礼

Wendyさん、こんばんは。レスが遅れ申し訳ありません。 "Cstr"というのが有るんですね。さすがに良くご存知で・・。 使わせていただきます。 有り難うございました。

noname#135138
noname#135138
回答No.2

Str 関数を使うことで解決すると思うのですが... ただし、注意が必要なのは Str 関数で数値を文字列に変換する際、 正の値を変換すると先頭にスペースが入りますので、ちょっと弄る必要があります。 Worksheets(Right(Str(i),len(Str(i))-1).Select こんな感じでいかがでしょうか?

  • Zero_0
  • ベストアンサー率35% (72/201)
回答No.1

sheets(i).select では、iは数値としてみてしまいます。 sheets("i").selectでは、シート名をiと見ます。 シート名は文字ですから、上記の方法ではダメです。 sheets(i & "").select としてやってください。 正式な方法ではないですができると思います。

miine
質問者

お礼

ほかの件でトラブルがあったもので、レスが遅くなり大変失礼しました。 これアイデアですね。 「Worksheets("積算" & i ).Select」の時はOKと分かったら、自分で気がつかなきゃダメですよね。 (^_^;

関連するQ&A