今回は、VBAによるワークシートの操作に関する内容です。
【今回の内容】
1.ワークシートの指定
2.ワークシートの追加
3.ワークシートの削除
4.ワークシートの名前を取得する
5.ワークシートを移動する
6.ワークシートをコピーする
ワークシートの指定
任意のワークシートを指定する方法は2通りあります。
《ワークシートの指定方法》
番号による指定 :Worksheets(シート番号).select
シート名による指定:Worksheets(シート名).select
エクセルでは、並んでいるワークシートタブの左から順に1、2、3、・・・とワークシートの番号が割り当てられており、この番号を指定することで特定のワークシートを指定することができます。
一方、シート名による指定ではワークシートの名前を直接指定します。このとき、シート名を必ず””(ダブルクオテーション)で囲う必要があるので注意してください。VBAでは””で囲うことで文字列として認識されます。なお、番号で指定する場合は必要ありません。
また、現在選択しているワークシートに関しては、次のように指定することも可能です。
《現在選択中のワークシートの指定方法》
ActiveSheet
ワークシートの追加
ワークシートを新規に追加する方法は、次のように書きます。
《ワークシートの追加方法》
一度に複数追加する:WorkSheets.Add Count := 枚数, Before(After) := _
シート名 or 番号, Type:=種類
シート名を指定して追加する:WorkSheets.Add.Name = シート名
Countは追加するシートの枚数を指定します。 一度に複数のシート追加する場合に使用します。
Before(After)は追加したい場所のシート名(番号)を指定します。指定したシート(番号)の左側、Afterでは右側に新しいシートが追加されます。シート名や番号は、[ WorkSheets( シート名 or 番号 ) ]と書くことで指定できます。シート名で指定する際は、””を忘れずに。
Typeは、追加するワークシートの種類を指定します。ワークシート以外にグラフシートなどを指定できます。なお、Typeは使う機会がほぼないと思いますので割愛します。また、グラフシートの追加方法については別途説明します。
いずれの項目も省略が可能です。Countを省略した場合、追加されるシートは1枚となります。またBefore(After)については、省略すると一番左側にワークシートが追加されます。Typeを省略すると通常のワークシートが追加されます。
サンプルコード(ワークシートを追加する)
Sub sheet_sample()
Worksheets.Add Count:=2, after:=Worksheets(2)
Worksheets.Add after:=Worksheets("Sheet3")
Worksheets.Add.Name = "Sample"
End Sub
サンプルコードでは、まず1行目で左から2番目のワークシートの右側にワークシートを2枚追加しています(Sheet4,5)。つづいて2行目でワークシート”Sheet3″の右に1枚追加しています。この時、2行目で追加されたシート(Sheet6)がアクティブになっているので、3行目ではこのシートの左側にワークシート”Sample”が追加されます。
ワークシートの削除
ワークシートを削除する方法は2種類あり、次のように書きます。
《ワークシートの削除》
番号による指定 :Worksheets(シート番号).Delete
シート名による指定:Worksheets(シート名). Delete
どちらのケースでも、削除しようとすると注意メッセージが表示されます。
このメッセージが表示されると処理が途中で停止するので、メッセージの表記をさせないように指定します。
《ワークシート削除時》 注意メッセージを表示(させる)させない
これは、最初と最後に次の文を記載することで設定と解除を行います。
《 注意メッセージを表示(させる)させない》
Application.DisplayAlerts = (True) False
・True:表示させる
・False:表示させない
コードの開始時に Application.DisplayAlerts = Falseを指定し、コードの末尾にApplication.DisplayAlerts = Trueと記載しておけば、処理中にメッセージの表示がされなくなります。
サンプルコード( 注意メッセージを表示させない )
Sub Sheetdelete_sample()
Application.DisplayAlerts = False
Worksheets(3).Delete
Worksheets("Sheet4").Delete
Application.DisplayAlerts = True
End Sub
サンプルコードでは左から3番目(Sheet5)を削除し、つぎにワークシート”Sheet4″を削除します。
ワークシートの名前を取得する
ワークシートの名前を取得する方法です。
《ワークシートの名前を取得する》
番号による指定 :変数 = Worksheets(シート番号).Name
現在選択しているシートの名前を取得:変数 = ActiveSheet.Name
※変数は文字列型 or Variant型で宣言
サンプルコード(ワークシートの名前を取得する)
Sub sheetname_sample()
Dim wsname As String
wsname = Worksheets(2).Name
MsgBox (wsname)
End Sub
この例では、左から2番目のワークシートの名前を取得し、取得した名前を表示させています。
Sub sheetname_sample()
Dim wsname As String
wsname = ActiveSheet.Name
MsgBox (wsname)
End Sub
今度は現在選択されているシートの名前を取得し、表示させています。
ワークシートを移動する
ワークシートを移動する方法は、次のように書きます。
《ワークシートを移動する》
番号による指定 :Worksheets(シート番号).Move Before(After) := _
Worksheets(移動先のシート名(or シート番号))
シート名による指定:Worksheets(シート名). Move Before(After) := _
Worksheets(移動先の シート名(or シート番号))
現在選択しているシートを移動:ActiveSheet.Move Before(After) := _
Worksheets(移動先の シート名(or シート番号))
シートの移動先は省略可能ですが、その場合は新しいブックへ移動しますので注意してください。
サンプルコード(ワークシートを移動する)
Sub sheetmove_sample()
Worksheets(2).Move after:=Worksheets(3)
Worksheets("Sheet1").Move before:=Worksheets("Sheet3")
End Sub
この例では、左から2番目のワークシートを左から3番目のワークシートの右側に移動したのち、”Sheet1″を”Sheet3″の左側に移動しています。
ワークシートをコピーする方法
ワークシートをコピーする方法です。
《ワークシートをコピーする》
番号による指定 :Worksheets(番号).Copy Before(After) := _
Worksheets(コピー先のシート名(or シート番号))
シート名による指定:Worksheets(シート名).Copy Before(After) := _
Worksheets(コピー先のシート名(or シート番号))
現在選択しているシートをコピー:ActiveSheet.Copy Before(After) := _
Worksheets(コピー先のシート名(or シート番号))
ワークシートのコピーは移動と同じ書き方で指定します。先ほどのサンプルコードのMoveをCopyに変更すれば、ワークシートのコピーを行うことができます。
コメント