このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】シートを指定する方法

今回はVBAでシートを指定する方法を分かりやすく説明します。

セルに書き込んだり、セルから値を読み取るときには必ずシートの指定が必要になります。

シートを指定しないと、勝手にアクティブなシートを指定しているので注意です

VBAでは、以下の3つの方法でシートを指定することができます。

  1. アクティブなシートを指定する方法
  2. シート名で指定する方法
  3. シートのインデックス番号で指定する方法

それぞれサンプルプログラム付きで説明するのでご覧ください。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

1. アクティブなシートを指定する方法

Sub SelectActiveSheet1()
    ' アクティブなシートのA1セルに値を代入する
    ActiveSheet.Range("A1").Value = 10
End Sub

このプログラムを実行すると、アクティブなシートのA1セルに値が代入されます。

アクティブなシートを切り替えると、そのシートが対象になります。

Sub SelectActiveSheet2()
    ' アクティブなシートのA1セルに値を代入する
    Range("A1").Value = 10
End Sub

このプログラムでも、アクティブなシートのA1セルに値が代入されます。

このプログラムではシートを指定していません。
シートを指定しない場合、デフォルトでアクティブなシートが対象となります。

便利な反面、予想外のシートが対象となるかもしれないので、注意が必要です。

2. シート名で指定する方法

Sub SelectSheetByName()
    ' シート名を指定して、そのシートのA1セルに値を代入する
    Worksheets("Sheet1").Range("A1").Value = 10
End Sub

このプログラムを実行すると、指定したシート(この例では"Sheet1″)がアクティブでなくても、そのシートのA1セルに値を代入できます。

Worksheetsは、VBAでシートを操作するためのコレクションオブジェクトです。
Worksheets(シート名)とすると、シートを指定することができます。

指定したシートが存在しない場合や、シート名を正しく指定していない場合にはエラーが発生するので、存在するシート名を指定して使いましょう。

3. シートのインデックス番号で指定する方法

Sub SelectSheetByIndex()
    ' インデックス番号を使用してシートを参照し、そのA1セルに値を代入する
    Worksheets(1).Range("A1").Value = 10
End Sub

このプログラムを実行すると、指定したインデックス番号のシート(この例では1番目のシート)がアクティブでなくても、そのシートのA1セルに値を代入できます。

Worksheetsはシート名だけでなく、インデックス番号でもシートを指定することができます。

インデックス番号は1から始まるため、存在する範囲の番号を指定して使いましょう。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい