VBAでワークブックを指定して記述する方法
ExcelのVBAを使用していると、ワークブックやワークシートを指定しながら入力したいことがよくあります。
しかし、頭の中ではイメージしていても、いざVBAを動かしてみるとエラーになったり違うシートに入力されたりすることも良くあります。
そこでこの記事ではVBAでワークブックを指定して記述する方法を紹介します。
今回はVBA初心者の方向けに、ワークブックやワークシートなどの階層についても説明しますので、ご自身の知識に合わせて読み飛ばしたり、気になる点をしっかり読んでいきましょう。
ワークブック・ワークシートの階層
まずはVBAに限らずExcelで使用される階層についてご説明します。
普段入力しているマスは「セル」と呼ばれていて、具体的に言うと「〇〇のブック」の「〇〇のシート」のセルに入力されています。
ブックは保存しているExcelのデータの名前です。
そして、シートはExcelの下にあるもので、基本的にはシート1から始まります。
セルは入力されているマスのことで、上の画像では「A1」のセルを選択しています。
ワークブックを指定した書き方
ワークブックを指定する場合の基本となる書き方は以下となります。
間に必ずコンマ「.」を記述する必要があります。
ワークブックを指定した書き方の例
Workbooks(“book1”).Worksheets(“sheet2”).Range(“A1”).Value = “テスト2”
End Sub
この書き方ではExcelの保存名がbook1だった場合、ワークシート2のセルA1に「テスト2」と入力されます。
ワークシートは2種類の書き方がある
ワークシートは先ほどのようにシート名をそのまま書く方法もありますが、シートの順番として記述することもできます。
or
Worksheets(2)
1つ目の書き方は「sheet2」の名称で保存しているシートを指定しており、2つ目の書き方はそのデータの中で2つ目のシートを表しています。
どちらの記述でもメリットとデメリットがある。シートを途中で削除する可能性があるなら1つ目の書き方を行い、シート名が途中で変更される可能性があるなら2つ目の書き方をするなど、メンテナンスを考えてコードを記述する
ワークブックを省略した書き方
以下のようにワークブックやワークシート名を省略した場合、アクティブブックのアクティブシートのセルを指定されます。
アクティブとは今開いているもののことを指します。
上記のコード場合、もしsheet3を開いているときにマクロを動かしたらsheet3のセルにテストと入力され、もしsheet2を開いているときにマクロを動かしたらsheet2に入力されるようになります。
ひこボタンを表示するなど、確実に「今開いているsheet」を指定する場合はシート名やブック名を省略するとコードが短くなって見やすくなる
まとめ
今回はExcelのVBAでワークブックを指定して記述する方法について紹介しました。
ワークブックやワークシートの指定を間違えると、思わぬ所で時間がかかってしまい、消したくないデータを消してしまったりします。
基本を知ることで今後の応用にも繋がりますので、是非ワークブックの指定方法を習得しておきましょう。
Excelの機能を使いこなすと、仕事の効率化から大きな時間短縮に繋がります。
仕事術のスキルが増えるとプライベートの時間を時間を増やすことができますので、当サイトで得た知識を是非活用していきましょう。