アプリ版:「スタンプのみでお礼する」機能のリリースについて

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でした。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/28 21:04

確実な方法です。


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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/28 21:04

こんばんは。



For i = 1 To 100
 Worksheets(CStr(i)).Select
Next

なお、Str関数は、もともと、VBの関数で、スペースが入ってしまいます。その場合は、Trim を使えばよいのです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/28 21:03

Str 関数を使うことで解決すると思うのですが...


ただし、注意が必要なのは Str 関数で数値を文字列に変換する際、
正の値を変換すると先頭にスペースが入りますので、ちょっと弄る必要があります。

Worksheets(Right(Str(i),len(Str(i))-1).Select

こんな感じでいかがでしょうか?
    • good
    • 0

sheets(i).select では、iは数値としてみてしまいます。


sheets("i").selectでは、シート名をiと見ます。
シート名は文字ですから、上記の方法ではダメです。
sheets(i & "").select としてやってください。
正式な方法ではないですができると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/28 21:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!