大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、シートを指定する方法として、アクティブシートを指定、シート名を使う、シートインデックスを使う、シートオブジェクトを使う方法があります。Excel VBAを使う上で、シートを指定する方法はかなり重要になってきます。シートを指定する方法について、マスターしていきましょう。

はじめに

この記事では、シートを指定する方法を、4つご紹介します。

4つの方法と、主な使い分けは次のようになります。

  • アクティブシートを指定 →1つのシートのみ使う、作業シートを使う
  • シート名を使う →別シートに転記
  • シートインデックスを使う →シートをループ
  • シートオブジェクトを使う →シート名が変更される場合

Excel VBAを使う上で、シートを指定する方法は、かなり重要になります。

シートを指定する方法について、マスターしていきましょう。

では、シートを指定する方法について、解説していきます。

この記事を読むメリット

  • 場面に応じてシートの指定方法を選択できるようになります。

目次

シートの指定方法の4選

シートを指定する方法を4つご紹介します。

  • アクティブシートを指定
  • シート名を使う
  • シートインデックスを使う
  • シートオブジェクトを使う

という感じになります。

それぞれ、解説していきます。

アクティブシートを指定

アクティブシートを指定してみます。

アクティブシートを指定

アクティブシートを指定するVBAコードです。

「ActiveSheet」を使って、現在アクティブのシートを指定します。

Sub TEST1()
  
  'アクティブシートに入力
  ActiveSheet.Range("A1") = "ABC"
  
End Sub

実行すると、アクティブシートに入力できます。

アクティブシートに入力できました

アクティブシートに入力できました。

「ActiveSheet」を省略すると「アクティブシート」

「ActiveSheet」を省略すると、アクティブシートを指定することになります。

Sub TEST2()
  
  '「ActiveSheet」は省略すると、アクティブシートに入力
  Range("A1") = "ABC"
  
End Sub

「ActiveSheet」を省略して、アクティブシートを指定します。

「ActiveSheet」は省略できます

「ActiveSheet」を省略して、アクティブシートを指定できました。

アクティブシートの左のシート

アクティブシートを起点にして、左のシートを指定するには「.Previous」を使います。

Sub TEST3()
  
  'アクティブシートの「左」のシートに入力
  ActiveSheet.Previous.Range("A1") = "ABC"
  
End Sub

「.Previous」を使って、アクティブシートの左のシートを指定できます。

アクティブシートの左のシートに入力します

実行すると、アクティブシートの左のシートに入力できます。

アクティブシートの左のシートに入力できました

アクティブシートの左のシートに入力できました。

アクティブシートの右のシート

アクティブシートの右のシートを指定するには、「.Next」を使います。

Sub TEST4()
  
  'アクティブシートの「右」のシートに入力
  ActiveSheet.Next.Range("A1") = "ABC"
  
End Sub

「.Next」を使って、右のシートを指定することができます。

アクティブシートの右のシートに入力します

実行すると、アクティブシートの右のシートに入力できます。

アクティブシートの右のシートに入力できました

アクティブシートの右のシートに入力できました。

シート名を使う

2つ目の指定方法の「シート名」を使って、シートを指定してみます。

シート名を使って指定

「シート名」を使って指定したい場合は、次のように入力します。

Sub TEST5()
  
  'シート名が「Sheet2」のシートに入力
  Worksheets("Sheet2").Range("A1") = "ABC"
  
End Sub

実行すると、シート名「Sheet2」に入力できます。

シート名「Sheet2」に入力できました

シート名「Sheet2」に入力できました。

「Sheets」で短縮してもOK

「Worksheets」を「Sheets」のように短縮してもできます。

Sub TEST6()
  
  '「Sheets」に短縮できる
  Sheets("Sheet2").Range("A1") = "ABC"
  
End Sub

実行すると、先ほどと同じようにシート名「Sheet2」を指定できます。

「Worksheets」は「Sheets」に省略できます

「Sheet2」に入力できました。

シートインデックスを使う

3つ目の方法で、シートインデックスを使って、シートを指定してみます。

シートの順番で指定

シートインデックスはシートの順番になります。

シートインデックスはシートの順番になります

一番左のシートが、シートインデックス「1」になります。

「2番目」のシートを指定

「2番目」のシートを、シートインデックスを使って指定してみます。

Sub TEST7()
  
  '「2番目」のシートに入力
  Sheets(2).Range("A1") = "ABC"
  
End Sub

実行すると、「2番目」のシートに入力できます。

「2番目」のシートに入力できました

「2番目」のシートに入力できました。

シートオブジェクトを使う

4つ目の方法で、シートオブジェクトを使って、シートを指定してみます。

シートオブジェクト

シートオブジェクトは、VBE画面で確認できます。

シートオブジェクトは、VBE画面で確認できます

VBA上のシートの名前みたいなものですね。

シートオブジェクトを使って指定

シートオブジェクトを使って、シートを指定するには次のように入力します。

Sub TEST8()
  
  'シートオブジェクト「Sheet2」に入力
  Sheet2.Range("A1") = "ABC"
  
End Sub

実行すると、「Sheet2」のシートオブジェクトに入力できます。

「Sheet2」のシートオブジェクトに入力できました

「Sheet2」のシートオブジェクトに入力できました。

シートの指定方法の使い分け

シートの指定方法の使い分けについてみてみましょう。

使い分けは、次のようになります。

  • アクティブシートを指定 →1つのシートのみ使う、作業シートを使う
  • シート名を使う →別シートに転記
  • シートインデックスを使う →シートをループ
  • シートオブジェクトを使う →シート名が変更される場合

では、それぞれみていきます。

1シートのみ使う場合は「アクティブシート」

1シートのみ使う場合は「アクティブシート」を使います。

1シートのみ使う場合は、「ActiveSheet」を省略して、セル範囲から記載します。

Sub TEST9()
  
  '1シートのみを使う場合は、アクティブシートを指定
  Range("A1") = "ABC"
  
End Sub

実行すると、アクティブシートに値を入力できます。

1シートのみ使用するときはアクティブシート

1シートのみ使う場合は、アクティブシートを使います

1シートのみの場合は、「ActiveSheet」を省略して、アクティブシートを指定します。

作業シートを使う場合は「アクティブシート」から指定

作業シートを使う場合も、「アクティブシート」を基準にして、指定します。

元シートを変更しないで、データの編集や加工をしたい場合に、作業シートを使います。

作業シートを使って計算をする

作業シートを使って、1を足してみます。

作業シートを使って、1を足してみます

作業シートを使って、1を足すVBAコードです。

Sub TEST10()
  
  Dim A
  Sheets.Add 'シートを追加
  'アクティブシートの「右」のシートから値をコピー
  ActiveSheet.Next.Range("A1").Copy Range("A1")
  Range("A1") = Range("A1") + 1 '1を足す
  A = Range("A1") '値を取得
  
  Application.DisplayAlerts = False
  ActiveSheet.Delete 'シートを削除
  Application.DisplayAlerts = True
  
  Range("A1") = A '値を入力
  
End Sub

では、VBAコードを実行してみます。

VBAコードを実行してみる

シートを追加します。

シートを追加します

アクティブシートの右側のシートである「ActiveSheet.Next」を使って、値をアクティブシートにコピーします。

アクティブシートの右側のシートである「ActiveSheet.Next」を使って、値をアクティブシートにコピーします

1を足して、セルから値を取得します。

1を足して、セルから値を取得します

作業シートを削除します。

作業シートを削除します

元のシートに値を入力します。

元のシートに値を入力します

こんな感じで、作業シートを使う場合は、「アクティブシート」を基準にして、右側のシートの値を取得したりします。

別シートの操作は「シート名」を使う

別シートの操作は「シート名」を使うと簡単です。

「Sheet1」の値を、「Sheet2」に転記するVBAコードです。

Sub TEST11()
  
  '「Sheet1」の値を「Sheet2」に転記
  Sheets("Sheet2").Range("A1") = Sheets("Sheet1").Range("A1")
  
End Sub

実行してみます。

「シート名」を使って別シートに転記

別シートに値を転記する場合は、「シート名」を使って転記します

こんな感じで、別シートに値を転記する場合は、「シート名」を使うと簡単です。

シートをループする際は「シートインデックス」で指定

シートをループする際は「シートインデックス」でシートを指定します。

シートをループして、シートインデックスを使って、シート名を取得するVBAコードです。

Sub TEST12()
  
  '最終行までループ
  For i = 1 To Sheets.Count
    'シート名を出力
    Debug.Print Sheets(i).Name
  Next
  
End Sub

こんな感じで、シートをループすることができます。

シートインデックスを使ってループする

シートインデックスを使って、シートをループします

実行すると、シートをループして、シート名を取得できます。

シートをループできた

シートをループして、シート名を取得できました

シートをループして、シート名を取得できました。

シート名が変更される場合は「シートオブジェクト」

シート名が変更されることがある場合は、「シートオブジェクト」を使ってシートを指定します。

Sub TEST13()
  
  'シートオブジェクト「Sheet2」に入力
  Sheet2.Range("A1") = "ABC"
  
End Sub

シート名を変更してみます。

シート名を変更

シート名を変更してみます

シート名が変更されても、シートオブジェクトはそのままなので、シートを指定することができます。

シート名を変更してもシートを指定できる

シートオブジェクトを使えば、シート名が変更されてもシートを指定することができます

こんな感じで、シート名が変更される場合は、シートオブジェクトを使います。

おわりに

この記事では、シートを指定する方法を、4つご紹介しました。

4つの方法と、主な使い分けは次のようになります。

  • アクティブシートを指定 →1つのシートのみ使う、作業シートを使う
  • シート名を使う →別シートに転記
  • シートインデックスを使う →シートをループ
  • シートオブジェクトを使う →シート名が変更される場合

Excel VBAを使う上で、シートを指定する方法は、かなり重要になります。

シートを指定する方法について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す