【初心者向けエクセルVBA】ワークシートをオブジェクト名で取り扱う方法


name

photo credit: jacobchristensen Table card via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

エクセルVBAで請求データ一覧から請求書を自動で作成する方法をシリーズでお伝えしています。

前回はこちらの記事でした。

【初心者向けエクセルVBA】データ一覧から請求書を自動で作る
初心者向けVBAの実用的な使い方について、請求データ一覧から請求書を自動で作成するを目標に進めます。初回はWorksheetオブジェクト、Rangeオブジェクトと、セルの値の操作についてお伝えします。

請求書マクロの方針と、オブジェクトについて、またセルの値の取得方法についてお伝えしました。

今回注目したいのは、ワークシートです。

実は、ワークシートを取り扱う方法として、「オブジェクト名」で指定する方法というのがあり、知っておくとかなり便利ですので、本記事でお伝えしますね。

なお、本記事は以下のYouTube動画と連動していますので、合わせてご覧ください。

では、いってみましょう!

スポンサーリンク

前回のおさらい

まず、前回のおさらいからです。

エクセルファイルに二つのシートがあり、以下の「請求データ」シートのデータを

エクセルVBAで使用する請求データ

以下の「請求書ひな形」シートのA21から先のセル範囲に転記したいというものです。

エクセルVBAで使用する請求書ひな形

作成したプロシージャがこちらです。

Sub 請求書作成()

'2行目を請求書ひな形に転記
Sheet2.Cells(21, 1).Value = Sheet1.Cells(2, 1).Value
Sheet2.Cells(21, 2).Value = Sheet1.Cells(2, 2).Value
Sheet2.Cells(21, 3).Value = Sheet1.Cells(2, 3).Value

'3行目を請求書ひな形に転記
Sheet2.Cells(22, 1).Value = Sheet1.Cells(3, 1).Value
Sheet2.Cells(22, 2).Value = Sheet1.Cells(3, 2).Value
Sheet2.Cells(22, 3).Value = Sheet1.Cells(3, 3).Value

'4行目を請求書ひな形に転記
Sheet2.Cells(23, 1).Value = Sheet1.Cells(4, 1).Value
Sheet2.Cells(23, 2).Value = Sheet1.Cells(4, 2).Value
Sheet2.Cells(23, 3).Value = Sheet1.Cells(4, 3).Value

End Sub

それで、Worksheetオブジェクトを表す「Sheet1」「Sheet2」という表現については、さらっと流してしまいましたので、今回解説をしていきます。

ワークシートのオブジェクト名とは

オブジェクト名はワークシートに定められている固有名称のようなもので、コードの中でそれを用いてWorksheetオブジェクトを表現できます。

なお、いわゆるシート名とは別のものです。

オブジェクト名を確認する方法

では、試しに「請求データ」シートのオブジェクト名を確認してみましょう。

まず、プロジェクトエクスプローラーで「Sheet1(請求データ)」を選択した状態で、VBEメニューから「表示」→「プロパティウィンドウ」を選択します。

または F4 キーでもOKです。

VBEでプロパティウィンドウを開く

すると、「請求データ」シートのプロパティウィンドウが開きます。

ウィンドウ内には「(オブジェクト名)」という項目があり、これがまさにオブジェクト名です。

「Sheet1」と設定されていますね。だから、この名称をそのままプロシージャの中で使えていただのです。

VBEでオブジェクト名を確認する

実は、プロパティウィンドウを開かなくても、オブジェクト名を確認できます。

というのも、上記画像の通り、プロジェクトエクスプローラーに「Sheet1(請求データ)」と記載されていますね。

まさに、ここでの表示が

オブジェクト名(シート名)

となっているので、こちらで確認するほうが簡単です。

オブジェクト名は、シート名つまりWorksheetオブジェクトのNameプロパティとは全く別モノですので注意して下さいね(2回目)。

オブジェクト名を編集する

さて、オブジェクト名ですがデフォルトでは「Sheet1」とか「Sheet2」といった無味乾燥な名称となっていますが、任意の名称に変更をすることができます。

オブジェクト名を変更するのは簡単で、プロパティウィンドウで「オブジェクト名」の欄にカーソルを当てて編集をするだけです。

VBEでオブジェクト名を編集する

編集したオブジェクト名を使用した転記プログラム

では、請求データの転記プログラムを、オブジェクト名を編集したものにしてみましょう。

  • 請求データ:wsData
  • 請求書ひな形:wsTemplate

とします。

Sub 請求書作成()

'2行目を請求書ひな形に転記
wsTemplate.Cells(21, 1).Value = wsData.Cells(2, 1).Value
wsTemplate.Cells(21, 2).Value = wsData.Cells(2, 2).Value
wsTemplate.Cells(21, 3).Value = wsData.Cells(2, 3).Value

'3行目を請求書ひな形に転記
wsTemplate.Cells(22, 1).Value = wsData.Cells(3, 1).Value
wsTemplate.Cells(22, 2).Value = wsData.Cells(3, 2).Value
wsTemplate.Cells(22, 3).Value = wsData.Cells(3, 3).Value

'4行目を請求書ひな形に転記
wsTemplate.Cells(23, 1).Value = wsData.Cells(4, 1).Value
wsTemplate.Cells(23, 2).Value = wsData.Cells(4, 2).Value
wsTemplate.Cells(23, 3).Value = wsData.Cells(4, 3).Value

End Sub

シートがどちらなのか、ちょっとわかりやすくなりましたよね。

まとめ

以上、エクセルVBAでワークシートをオブジェクト名で取り扱う方法についてお伝えしました。

シートをオブジェクト名で取り扱うことで

  • シートをプロジェクト全体で一意で指定できる
  • 宣言やセットなどのステートメントを省ける

といったメリットがあります。

ワークシートを使用する際は、ぜひこの選択肢も利用できるようにしておいてくださいね。

では、次回ですが、このプロシージャを「繰り返し」を用いてスッキリさせていきます。

【初心者向けエクセルVBA】For~Next文で簡潔にプログラムを書く
エクセルVBAではコピー&ペーストを自動化するという処理がよく活用されますが、その際に活用する繰り返し処理用の命令であるFor~Next文を徹底的に解説し、請求書の自動作成プログラムを簡略化していきます。

どうぞお楽しみに!

連載目次:データ一覧から請求書を自動で作る

お仕事において特定のデータ一覧から必要な情報を抽出するということは頻繁にありうると思います。ここではデータ一覧から請求書を作るということを目標に、実務で使えるスキルをまっすぐに身に着けることを目的としています。
  1. 【初心者向けエクセルVBA】データ一覧から請求書を自動で作る
  2. 【初心者向けエクセルVBA】ワークシートをオブジェクト名で取り扱う方法
  3. 【初心者向けエクセルVBA】For~Next文で簡潔にプログラムを書く
  4. 【初心者向けエクセルVBA】行の数をカウントする&不要な行を隠す
  5. 【初心者向けエクセルVBA】文字列の連結&Format関数での書式変更
  6. 【初心者向けエクセルVBA】セル範囲を一気にまとめてコピーする方法
  7. 【初心者向けエクセルVBA】ワークシートのデータのある範囲だけをピッタリ取得する方法
  8. 【初心者向けエクセルVBA】セル範囲の平行移動をする方法・リサイズをする方法
  9. 【初心者向けエクセルVBA】日付データから年・月・日を取り出す
  10. 【初心者向けエクセルVBA】If~Thenを使った条件分岐の超入門
  11. 【初心者向けエクセルVBA】For~Next文でセル範囲を一行ずつ移動させる
  12. 【初心者向けエクセルVBA】セル範囲のクリア~ClearContentsメソッドとClearメソッド
  13. 【初心者向けエクセルVBA】ワークシート・セルを選択する方法の色々について
  14. 【初心者向けエクセルVBA】入力ダイアログを表示するInputBoxメソッドの使い方
  15. 【初心者向けエクセルVBA】日付データから月末日と翌月末日を自動算出する
  16. 【初心者向けエクセルVBA】ワークシートをコピーする方法とそのシート名を変更する方法
  17. 【初心者向けエクセルVBA】オブジェクトを変数にセットして取り扱う方法
  18. 【初心者向けエクセルVBA】Openメソッドで新たなブックを開く方法
  19. 【初心者向けエクセルVBA】現在マクロを書いているブックのフォルダパスを取得する
  20. 【初心者向けエクセルVBA】開いたブックとそのワークシートをオブジェクト変数にセットする
  21. 【初心者向けエクセルVBA】ワークブックを別名で保存して閉じる方法
  22. 【初心者向けエクセルVBA】取引先別に請求書を作成するマクロを作る

コメント

  1. SGO より:

    とても素敵です!
    ありがとうございます!!

  2. おっさんSE より:

    仕事で急遽Excelマクロが必要になり、半分パニックの中
    (1)から(11)までためさせてもらいました。
    一通り感じがつかめました。とてもわかりやすかったです。
    ありがとうございました!

  3. よぶびえ より:

    職場でのマクロ作成にとても参考にさせて頂いております!
    ひとつお伺いですが、オブジェクト名での指定とシート名での指定とどちらがおすすめでしょうか?…というとケースバイケースだと思いますが、どういう場合にどちらを使うかとか決めていらっしゃいますでしょうか?
    シート名を変更しても良いという点やこちらの頁の通り記述の少なさという点では、オブジェクト名での指定が良いと思いますが、一方で、オブジェクト名という別の管理項目が必要となってしまうこと、また、初級者にはわかりづらいかなと思っており悩んでおります。良いお知恵があれば教えて頂けると幸いです。

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