こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel2002のVBAでワークシートの挿入で疑問

VBAの勉強をし始めたばかりものものです。
ワークシートの数が10枚になるまでワークシートの挿入を繰り返すように、以下のVBAを作成しました。

Sub wsins()
Dim i As Integer
For i = Worksheets.Count To 10 Step 1
Sheets.Add
Next
End Sub

しかし、上記の方法だと、ワークシートが11枚になってしまいます。
もちろん10のところを9にすることによって、ワークシートがトータルで10枚にはなるのですが、理由がわかりません。
勉強したばかりで、思い違いをしているのかと思いますが、教えていただけないでしょうか?よろしくお願いいたします。

投稿日時 - 2004-08-18 12:11:45

QNo.966363

暇なときに回答ください

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

Sub シート()
Dim i As Integer
i = Worksheets.Count
Do Until i = 10
  Sheets.Add
  i = i + 1
Loop
End Sub

これではどうでしょうか?もっとスマートな方法があるかもしれませんが・・・。

投稿日時 - 2004-08-18 12:28:31

お礼

ありがとうございます。
Do Until~Loop
はちょうど勉強していたところでしたので、とっても役に立ちました。
本当にありがとうございました。

投稿日時 - 2004-08-18 12:40:41

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

たびたびすみません。下記のような方法もありますね。

Sub シート()
Dim a As Integer
a = 10 - Worksheets.Count
Sheets.Add Count:=a
End Sub

投稿日時 - 2004-08-18 12:34:54

お礼

Count:=a
がまだ理解できていないようですので、勉強しなおします。
本当にありがとうございました。

投稿日時 - 2004-08-18 12:42:23

ANo.1

For i = Worksheets.Count To 10 Step 1では、iが10になった直後に、もう一度Sheets.addを実行してしまうからですね。

投稿日時 - 2004-08-18 12:15:20

補足

なるほどわかりました。
では、10という数字を使って、記述するにはどのようにすればよいでしょうか?
お手数ですが、教えていただけませんか?よろしくお願いいたします。

投稿日時 - 2004-08-18 12:18:22

あなたにオススメの質問