0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

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点とかはちょっとひどい有様ですね・・・
数学バカみたいなデータが作成されてしまいました(笑)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?