Help us understand the problem. What is going on with this article?

Q8.ワークシートをコピーするには?

今回はワークシートをコピーするマクロを作っていく方法を考えていきます。
前回も使用した以下の画像をご覧ください。

7-5.png

この画像では、田中、高橋、山田という個人のデータを取り扱ったシートがあります。

ここに新たに別の人のシートを追加するというマクロを作っていきましょう。
追加の元となるデータは田中のシートとなります。
田中のシートをコピーしてデータを書き換えていきます。

■ポイント

ポイントとなるのは、ワークシートをコピーするにはどういう記述をするか?というところです。
今回は以下のメソッドを使います。

Worksheets("田中").Copy After:=Worksheets(Worksheets.Count)

これは、田中というシートを末尾にコピーするという意味になります。
Worksheets.Countというのは、ワークシートの数を表しています。
Afterへこれを指定することにより、末尾に指定したシートをコピーすることができます。

■回答

Sub Q8_Answer()
    Dim i As Integer
    For i = 1 To 10
        Worksheets("田中").Copy After:=Worksheets(Worksheets.Count)   ' 末尾に追加
        ActiveSheet.Name = "サンプル" & i
        ActiveSheet.Range("B3").Value = "サンプル" & i
        Randomize
        ActiveSheet.Range("C3").Value = Int(100 * Rnd + 1)
        ActiveSheet.Range("D3").Value = Int(100 * Rnd + 1)
        ActiveSheet.Range("E3").Value = Int(100 * Rnd + 1)
    Next i
End Sub

■解説

今回はfor文を利用して、10個のシートを作成しています。

ActiveSheet.Range("C3").Value = Int(100 * Rnd + 1)
ActiveSheet.Range("D3").Value = Int(100 * Rnd + 1)
ActiveSheet.Range("E3").Value = Int(100 * Rnd + 1)

この3行は何をしているかというと、乱数で得点となるデータを取得しています。
これは、1~100の間の整数を指定のセルへ格納することを意味しています。

これで、サンプル1~サンプル10までの10人分のダミーデータができました。
しっかりと点数まで入っています。

ただし、このマクロ、1つだけ注意があって、同じことを2回できないことです。

つまり、このマクロは2回目に実行した時にはエラーとなります。

なぜなら、すでにサンプル1~10というシートが存在するからです。
エクセルは同名のシートは共存することができません。
一意の名前である必要があるのです。

最後のマクロを実行した後のエクセルの画像を載せておきます。

Q8.png

画像では切れていますが、しっかりとサンプル10まで作成されています。

国語1点とか英語6点とかはちょっとひどい有様ですね・・・
数学バカみたいなデータが作成されてしまいました(笑)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away