【EXCEL VBA】シートの操作 Worksheetオブジェクト

ワークシートに対してのいろいろな操作操作を紹介します!

スポンサーリンク

シートの操作

新しいワークシートを挿入する

Addメソッド

構文

Worksheetsコレクション.Add

新しいシートを挿入するには、WorksheetsコレクションのAddメソッドを実行します。

実行すると、アクティブシートの左側に新しいワークシートが挿入されます。

Sub sample()

    '新しいシートを挿入する
    Worksheets.Add
    
End Sub

挿入する場所を指定したい場合

Addメソッドには、BefoeAfterの2つの引数が用意されています。

この引数を指定することで、シートを挿入する位置を指定出来ます。

<”Sheet2”の左側に挿入したい場合>

左側はBeforeです。シートの名前を指定してあげます。

Sub sample()

    '新しいシートを挿入する
    Worksheets.Add Before:=Sheets("Sheet2")
    
End Sub

<一番後ろの位置に挿入したい場合>

現在の一番後ろのシートは、シートの番号で指定します。

Sheets.Countでワークブックに何枚シートがあるかを数えられますのでその特性を活かします。

Afterは右側に挿入なので、一番後ろのシートの右側に挿入と言う意味になります。

Sub sample()

    '新しいシートを一番後ろに挿入する
    Worksheets.Add After:=Sheets(Sheets.Count)
    
End Sub

挿入したシートを変数に格納する

新しく挿入したシートには、その後なんらかの処理を加えると思います。

作成したときに、同時に変数に格納してしまうと後で便利です。

Sub sample()

  '挿入したシートを格納する変数を用意する
  Dim NewSheet As Worksheet

    '新しいシートを挿入して、変数に格納する
    Set NewSheet = Worksheets.Add

  ’イミディエイトウィンドウにシート名を出力する
    Debug.Print NewSheet.Name

End Sub

ちなみに、Addメソッドなど引数を指定した場合で、直接変数に格納する時は、引数を()で囲ってください。

Sub sample()

  '挿入したシートを格納する変数を用意する
  Dim NewSheet As Worksheet

    '新しいシートを挿入して、変数に格納する
    Set NewSheet = Worksheets.Add(After:=Sheets(Sheets.Count))

  ’イミディエイトウィンドウにシート名を出力する
    Debug.Print NewSheet.Name

End Sub

シート名を変更する

シート名を変更するには、WorksheetオブジェクトのNameプロパティを設定します。

構文

Worksheetオブジェクト.Name=”付けたい名前”

以下のコードで、ここまでの一連の流れを一気にやりましょう!

Sub sample()

  '挿入したシートを格納する変数を用意する
  Dim NewSheet As Worksheet

    '新しいシートを挿入して、変数に格納する
    Set NewSheet = Worksheets.Add

    'シートの名前を変更する
  NewSheet.Name = "新シート"

  ’イミディエイトウィンドウにシート名を出力する
    Debug.Print NewSheet.Name

End Sub

※既に存在する名前や、シート名に指定出来ない文字列を指定するとエラーになるので注意してください!

シートの挿入と同時に名前を設定する

新しいシートの挿入と同時に名前を設定することも出来ます。

構文

Worksheetオブジェクト.Add.Name=”付けたい名前”

Sub sample()

    '新しいシートを挿入して名前を付ける
    Worksheets.Add.Name = "新シート"
    
End Sub

シートを削除する

シートを削除するには、Deleteメソッドを使います。

構文

Worksheetオブジェクト.Delete

次はアクティブシートを削除するコードです。

Sub sample()

  ActiveSheet.Delete

End Sub

動画でも分かるように、単純に削除のコードだけだと「本当に削除しますか」の確認が毎回出てしまいますので、次確認が必要ない場面では、

Application.DisplayAlerts=False

を指定します。

これは、確認メッセージを出さずに実行させる命令です。

通常はTrueが設定されています。

VBAでFalseに設定するとプログラムが終了した後も、設定が残ってしまい様々なメッセージが表示されなくなってしまいますので、シート削除の処理が終わったらTrueに戻すことを忘れないでください、

Sub sample()
  Application.DisplayAlerts=False
  ActiveSheet.Delete
  Application.DisplayAlerts=True
End Sub

シートをコピーする

シートをコピーするにはCopyメソッドをを使います。

構文

Worksheetオブジェクト.Copy

新しいワークシートを挿入するときと同じように、BeforeAfterの引数の指定でコピーしたシートを挿入する場所が設定出来ます。

Sub sample()

  '挿入したシートを格納する変数を用意する
  Dim NewSheet As Worksheet

    'シートをコピーして一番後ろに挿入す変数に格納する
    Set NewSheet = Worksheets.Add(After:=Sheets(Sheets.Count))

    'シートの名前を変更する
  NewSheet.Name = "新シート"

  ’イミディエイトウィンドウにシート名を出力する
    Debug.Print NewSheet.Name

End Sub

シートを移動する

そんなに需要ないかもしれないですが、移動も出来ます。

これも、BeforeとAfterの引数で移動場所を指定します。

アクティブシートを一番後ろに移動します。

Sub sample()

    ActiveSheet.Move After:=Sheets(Sheets.Count)

End Sub

シートの表示・非表示を切り替える

シートの表示非表示はWorksheetオブジェクトのVisibleプロパティで設定します。

構文

Worksheetオブジェクト.Visible = 設定値

設定値意味
True表示
False非表示
xlSheetVeryHidden非表示(ワークシート上で手動で表示できない)

TrueとFalseは通常のワークシートで設定するのと同じですが、 xlSheetVeryHiddenを設定するとワークシート上で手動で戻すことが出来ません。

システム上使っているだけのシートなどこれで設定しておくと、ユーザーが触れないのでいいと思います(^o^)

Sub sample()

    Dim sht As Worksheet
    Set sht = ActiveSheet
    
    '通常非表示
    sht.Visible = False
    
    'xlSheetVeryHidden
    sht.Visible = xlSheetVeryHidden
    
    '表示
    sht.Visible = True

End Sub

シートの保護

シートの保護の操作は以下です。

シートを保護する

構文

Worksheetオブジェクト.Protect(Password)

※引数のパスワードは省略可です。

Sub sample()

    Dim sht As Worksheet
    Set sht = ActiveSheet
    
    'シートを保護
    sht.Protect Password:="0000"
    
End Sub

シートの保護を解除する

構文

Worksheetオブジェクト.UnProtect(Password)

※引数のパスワードは、保護にパスワードがかかっている場合は指定します。パスワードがかかっているのに指定しなかった場合は、パスワードを入力するポップアップが表示されます。

Sub sample()

    Dim sht As Worksheet
    Set sht = ActiveSheet
    
    'シートを保護
    sht.Protect Password:="0000"
    
    'シートを保護を解除
    sht.Unprotect Password:="0000"
    
End Sub

コメント

タイトルとURLをコピーしました