VBAで、シート名で1から31まで31枚のシートにfor next で同じ処理をしたいのですが、worksheets(????)の????の部分をどのように書けば良いのでしょうか?お知恵を授けて頂けませんでしょうか?

Visual Basic | Excel28閲覧

ベストアンサー

1

1人がナイス!しています

ThanksImg質問者からのお礼コメント

早速試してバッチリ動きました!ありがとうございました!

お礼日時:4/13 17:30

その他の回答(4件)

1

31は末日の事だと思いますが、 Sub Sample() Dim i As Long, eom As Long Dim j As String eom = Day(WorksheetFunction.EoMonth(Date, 0)) For i = 1 To eom j = i Sheets(j).Range("A1") = "Sample" Next i End Sub とかやると実行時の月の末日まで、という可変対応(28~31)が可能です。

1人がナイス!しています

1

ID非公開

2021/4/13 16:46

for I = 1 TO 31 Worksheets(I).Activate やりたい処理 Next I 出来れば数字だけのシート名は避けた方が良いですよ。

1人がナイス!しています

ありがとうございます。シートのインデックスでしてではなくてシート名で指定したかったのです。1~31以外に印刷や入力というシートが存在しますので。伝わらなくてすみませんでした。

1

シート名は全角文字ですか、それとも半角文字ですか。 全角文字なら Worksheets(StrConv(i,vbWide)) 半角文字なら Worksheets(CStr(i))

1人がナイス!しています

1

以下のどちらでも。 For Each sh In ActiveWorkbook.Sheets MsgBox sh.Name Next For i = 1 To Sheets.Count MsgBox Sheets(i).Name Next

1人がナイス!しています