2016年6月19日日曜日

【VBAリファレンス】ワークシートの作成、任意の名前のワークシートの作成、任意の名前のワークシートを作成し移動させる。の3本立てです。

たくさんのデータを取り扱っていると
ワークシートを追加した上で
新たな処理を行う必要性が出てきます。

ワークシートを追加する場合の
基本コードは以下の通りです。

-------------------------------------------
Sub ワークシートを追加()

Worksheets.Add

End Sub
-------------------------------------------
この1行を記述するだけで
ワークシートを追加できます。
Excelのバージョンによりますが
2013以降はデフォルトのワークシート数がSheet1のみとなっており
以前はSheet1~3までとなっています。

上記のコードを実行すると
以降のシート番号が自動で割り振られ
シートが生成されます。

※処理結果


















ただし、VBAコードで処理を実行するとき
シートを指定したうえで、作業を行うことがあり
時に、Sheet番号を指定してするにはちょいと面倒だったりします。
そんなのいちいち覚えてられませんし。
余談ですが、Exceブックlを開いたままシートを生成すると
生成した数だけシート番号が上がっていきます。
しかし、ブックを開きなおすと、またそのシート番号は最初のSheet1から生成され始めます。
といっても、ブック内にSheet1があると飛ばされSheet2から生成されます。
(ここは覚えなくていです)


さらに横道にそれますが
シートを指定して処理を行う場合、
以下のように記述してワークシートを指定します。
-------------------------------------------
Sub ワークシート処理()

Sheets("指定したいシート名").Select

End Sub
-------------------------------------------
赤文字の箇所を指定したいシート名に変えて実行すると
そのシートを指定することが出来ます。

さて、ではシートを作成した時に任意のシート名を記述しておけば
希望通りの処理を行うことが出来ますね。

一連の処理を記述します。
・【新しいシート】という名称のワークシートを作る
・そのシートを指定する
・そのシートに算数の九九の結果をFor文を使って記述する

上記3つの処理を1つのプロシージャで作成してみます。
なお、シート名をつけたい時は
Worksheets.Addの次の行に
ActiveSheet.Name = "指定したいシート名"と記述するだけでOKです。


まずは、実行前のブックの画像です。


なんてことはない普通のシートです。

記述するコード画像です。


記述している内容は以下の通りです。
-------------------------------------------
Sub test()

Dim i, j, x As Long

'新しいシートを生成し、シート名を新しいシートに変更する
Worksheets.Add
ActiveSheet.Name = "新しいシート"

'新しいシートを選択する
Sheets("新しいシート").Select

'新しいシートに九九の表示を行う
For i = 1 To 9
    For j = 1 To 9
    x = j * i
    Cells(j, i) = x
    Next j
Next i

End Sub
-------------------------------------------

実行後の画像


新しいシートが作成され、九九の結果が記述されています。



では、もう少し詳しく説明させてください。

作成時シートを任意の場所にあらかじめ移動しておきたい場合は
以下のように記述します。
-------------------------------------------
Sub ワークシートを追加()

Worksheets.Add after:=Worksheets(Worksheets.Count)

End Sub
-------------------------------------------
これは作成したシートを
まず、ブック内にあるシートの枚数をしらべます※赤文字の部分です。
で、そのシートの後(Afterの部分)に移動をさせるという記述です。

カッコ内のWorksheets.Countの部分はシート名で指定することが出来ます。
例):新しいシートというシートの後に移動させたい場合は
Worksheets.Add after:=Worksheets("新しいシート")となります。
シート名を指定する場合は、ダブルクォーテーションで囲ってあげてください。


また、指定しているシートの前に生成したい場合は
afterbeforeに変えてあげれば、指定したシートの左隣に移動されます。
右隣がafterで左隣がbeforeと覚えておきましょう。

※シートの作成時に特に指定をしない場合は、
一番左側に新しいシートが生成されますので合わせて覚えておいてください。


0 件のコメント:

コメントを投稿