Excel VBA ワークシートを編集するプロパティ・メソッド

スポンサーリンク
スポンサーリンク

ワークシートの編集

VBAでワークシートを編集するには

  • Worksheetsコレクション
  • Worksheetオブジェクト
  • Tabオブジェクト

の各プロパティやメソッドを使用して
ワークシートを編集します。

ワークシート単位での編集操作には
追加、削除、移動、コピー、シート名変更、
シートタブ色変更などがあります。

これらの編集操作をするプロパティや
メソッドについて詳細に解説します。

ワークシートを編集するプロパティ・メソッド一覧

Add【アド】メソッド

新しいワークシートを追加するには
Worksheetsコレクションまたは、Sheetsコレクションの
Add【アド】メソッドを使用します。
Addメソッドでシートを追加すると
そのシートがアクティブになります。

Add【アド】メソッドの書式

[]内は省略可能です。
オブジェクト.Add([Before,After,Count])


設定値(引数)の説明

  • オブジェクト(必須)
    Worksheetsコレクションまたは、Sheetsコレクションを指定します。
    Worksheetオブジェクトは指定できません。
  • Before【ビフォア】(省略可)
    指定したワークシートの前(左側)に新規追加します。
  • After【アフター】(省略可)
    指定したワークシートの後(右側)に新規追加します。
  • Count【カウント】(省略可)
    追加するワークシートの枚数を指定します。

※引数Before Afterを省略した場合は
アクティブシートの前(左側)に追加されます。

シートの末尾に新規シートを2枚追加するコード例

Sub シート追加()
Worksheets.Add After:=Worksheets(Worksheets.Count), Count:=2
End Sub

引数Afterに指定するシートはCount【カウント】メソッドで取得した
シートの枚数をインデックス番号にして最終(右側)のシートを
参照しています。

Delete【デリート】メソッド

指定したワークシートを削除するには
Worksheetオブジェクトの
Delete【デリート】メソッドを使用します。

複数のワークシートを参照して、まとめて
削除することもできます。

Delete【デリート】メソッドの書式

オブジェクト.Delete


設定項目の説明

  • オブジェクト(必須)
    Worksheetオブジェクトを指定します。
    指定したワークシート名が存在しない場合はエラーになります。
    ワークシートを削除すると左側から順に振られているインデックス番号が
    振りなおされます。インデックス番号で指定する場合は
    参照するワークシートがずれることがあるので注意が必要です。

ワークシートsheet1を削除するコード例

Sub シート削除()
Application.DisplayAlerts = False
Worksheets("sheet1").Delete
Application.DisplayAlerts = True
End Sub

コードの解説

ワークシートを削除しようとすると
削除確認のダイアログボックスが表示されます。
このダイヤログボックスを非表示にするには
Applicationオブジェクトの
DisplayAlerts【ディスプレイアラーツ】プロパティの
値をFalseに設定します。
シートを削除した後にTrueに設定して
非表示を解除します。
※削除したシートの復元はできません。


Move【ムーブ】メソッド

Copy【コピー】メソッド

指定したワークシートを移動するには
Move【ムーブ】メソッドを使用します。
指定したシートをコピーするには
Copy【コピー】メソッドを使用します。

Move【ムーブ】Copy【コピー】メソッドの書式

[]内は省略可能です。
オブジェクト.Move([Before,After])
オブジェクト.Copy([Before,After])


設定値(引数)の説明

  • オブジェクト(必須)
    WorksheetオブジェクトまたはWorksheetsコレクション
    Sheetsコレクションを指定します。
  • Before【ビフォア】(省略可)
    指定したワークシートの前(左側)に移動またはコピーします。
  • After【アフター】(省略可)
    指定したワークシートの後(右側)に移動またはコピーします。

※引数Beforeと引数Afterを同時に指定することはできません。
※移動先またはコピー先となる引数BeforeとAfterを省略した場合は
新規ブックが作成され、新規ブックに移動またはコピーされます。


ワークシートを別ブックに移動するコート例

Sub 別ブックに移動()
Dim 移動先 As String
移動先 = "Book1.xlsx"
Workbooks.Open Filename:=ThisWorkbook.Path & "¥" & 移動先
ThisWorkbook.Activate
Worksheets("移動シート").Move Before:=Workbooks(移動先).Worksheets(1)
End Sub

コードの解説

コードが記述されているブックのシート「移動シート」を
同じパスにあるブック「Book1.xlsx」の一番左側に移動する
コード例です。


2行目 
【Dim 移動先 As String】
移動先のブック名を格納する変数「移動先」を
文字列型(String)で宣言しています。


3行目
【移動先 = “Book1.xlsx”】
変数「移動先」に移動先のブック名を
代入して格納しています。


4行目
【Workbooks.Open Filename:=ThisWorkbook.Path & “¥” & 移動先】
workbooksコレクションのOpenメソッドでこのブックのパスにある
移動先となる「Book1.xlsx」を開きます。


5行目
【ThisWorkbook.Activate】
このブックをアクティブにします。


6行目
【Worksheets(“移動シート”).Move Before:=Workbooks(移動先).Worksheets(1)】
Moveメソッドでシートを移動します。


※移動先に同じ名前のシートが存在していた場合は
「移動シート(2)」のようにシート名の後に自動的に
番号が振られます。

同じブック内で別シートとしてコピーするコード例

Sub シートコピー()
Worksheets("原本").Copy Before:=Worksheets("原本")
ActiveSheet.Name = "No" & Worksheets.Count - 1
End Sub

コードの解説

ブック内の「原本」シートをコピーして
引数Beforeで「原本」シートの前に移動します。
そのシートの名前をNameプロパティで
Countプロパティで取得したワークシート枚数から
1減算した値で連番のシート名を付けています。


複数のシートを移動またはコピーする方法

Array関数を使用して
Worksheets(Array(“Sheet1″,”sheet2”)).Copy
のように記述して複数シートを指定します。
全シートの場合は
Worksheets.Copy
のようにWorksheetsコレクションを使用します。


Name【ネーム】プロパティ

ワークシートのシート名を取得または設定するには
Worksheetオブジェクトの
Name【ネーム】プロパティを使用します。

Name【ネーム】プロパティの書式

【取得】
オブジェクト.Name
【設定】
オブジェクト.Name = 設定値


設定値の説明

  • オブジェクト(必須)
    Worksheetオブジェクトを指定します。
  • 設定値(必須)
    ワークシート名を文字列で指定します。
    ワークシート名は31文字以内で指定します。
    空白を使用することはできません。
    すでにあるシート名は使用できません。
    以下の記号を含めることはできません。
    「:」「¥」「/」「?」「*」「[]」

ワークシートの追加と同時にシート名を設定する方法

Addメソッドにより追加したシートには
Workbookオブジェクトが返ります。
これを利用して
Workbooks.Add.Name = “追加”
と記述するとシート追加と同時にシート名を設定できます。

シート名を設定するときに同じシート名がないか確認する方法

同一のブック内に同じ名前のシートを作成することは
できません。シート名を設定するときに、設定したい
シート名がすでに存在するかどうかを確認するには
For EachステートメントIf文(条件分岐)を使用して
以下のように記述することができます。
InputBox関数でユーザーにシート名を入力してもらい
繰り返し処理の中で同じシート名があった場合は
GoToステートメントでInputBox関数の処理まで戻り
同名シートが無かった場合はシート原本をコピーして
コピーしたシート名をユーザーが入力したシート名にする
コードです。

同じシート名があるか条件分岐するコード例

Sub 同名シート確認()
Dim シート名 As String
Dim シート As Worksheet
移動:
シート名 = InputBox("シート名を入力してください。")
 For Each シート In Worksheets
If シート.Name = シート名 Then
MsgBox シート名 & "と同じシート名があります。"
GoTo 移動
End If
Next
Worksheets("原本").Copy Before:=Worksheets("原本")
ActiveSheet.Name = シート名
End Sub

指定したシートだけ残してほかのシートを削除する方法

For Eathステートメントの繰り返し処理の中で
If文で条件分岐を行い、シート名を確認しながら
シート原本だけを残してシートを削除します。

コード例

Sub 指定シート以外削除()
Dim シート As Worksheet
 For Each シート In Worksheets
If シート.Name <> "原本" Then
Application.DisplayAlerts = False
シート.Delete
Application.DisplayAlerts = True
End If
Next
End Sub

Count【カウント】プロパティ

指定したシート数や選択しているシート数を取得するには
Worksheetsコレクションの
Count【カウント】プロパティを使用します。
最後(右端)のシートのインデックス番号を
取得したり、シートの数だけ繰り返し処理をする場合
などに利用されます。
非表示になっているシートも数えます。

Count【カウント】プロパティの書式

オブジェクト.Count


設定項目の説明

  • オブジェクト(必須)
    Worksheetsコレクションまたは、複数のシートを参照している
    Worksheetオブジェクトを指定します。

※単一のWorksheetオブジェクトに対してのCountプロパティを
使用することはできません。

グラフシートも含めた全シート数を取得する方法

すべてのシート数を取得するには
Sheetsコレクションを対象にし
Sheets.count」と記述します。
また、グラフシートの数を取得するには
Charts【チャーツ】コレクションを対象にし
Charts.Count」と記述します。

表示されているシートのみ数える方法

Countプロパティプロパティは非表示のシートも
カウントします。表示しているシートのみ数えるには
シートの表示・非表示を取得、設定する
Visible【ビジブル】プロパティを使って
以下のように記述します。

表示されているシートだけカウントするコード例

Sub 表示シートカウント()
Dim カウント As Integer
Dim シート As Worksheet
 For Each シート In Worksheets
If シート.Visible = True Then
カウント = カウント + 1
End If
Next
MsgBox "表示されているワークシート数は" & カウント
End Sub

Color【カラー】プロパティ

シート見出しの色を取得または設定するには
WorkSheetオブジェクトのTab【タブ】プロパティで取得した
ワークシートの見出しを表すTab【タブ】オブジェクトに
対してColor【カラー】プロパティを使用します。

Color【カラー】プロパティの書式

【取得】
オブジェクト.Color
【設定】
オブジェクト.Color = RGB値


設定値の説明

  • オブジェクト(必須)
    WorksheetオブジェクトのTab【タブ】プロパティで取得した
    Tab【タブ】オブジェクトを指定します。
  • 設定値(必須)
    RGB関数を使用して値を設定します。

    先頭のシートの見出しを赤にするコード例

    Sub 見出し色変更()
    Sheets(1).Tab.Color = RGB(255, 0, 0)
    End Sub

    シート見出しの色の設定を解除する方法

    ColorIndex【カラーインデックス】プロパティを使用して
    値をxlNone【エックスエルナン】に設定します。例えば
    アクティブシートの見出しの色を解除する場合は
    Activesheet.Tab.colorIndex = xlNone
    と記述します。


    以上で
    ワークシートを編集するプロパティ・メソッドについての
    解説を終了します。 ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク