【VBA】ワークシートの取得【シート名・インデックス・オブジェクト名の3つの指定】

VBA

本記事では『ワークシートの取得』の解説をしていきます。

その取得の仕方としてシート名を指定する」「インデックスで指定する」「オブジェクト名で指定するの3つを解説していきます。

スポンサーリンク



シート名で指定する

ワークシートはシート名で取得することができます。

 

ワークシートをシート名で取得する記述は下の通りです。

 

注意開発者以外でもエクセル操作時にはシート名を変更することができてしまいます。

なので、ツールの仕組みを知らない人がもしも”シート名を変更してしまったら、この指定の仕方ではシートが取得できなくなる”ということを覚えておきましょう。

 

インデックスで指定する

Worksheetオブジェクトの集合がWorksheetsコレクションです。

なので、ワークシートを取得する際にはインデックスで指定することもできます。

上の画像のような場合の”Sheet1”シートを取得するコードは下の通りです。

 

注意エクセル操作時に”シートを移動させたり、新しくシートを追加したりすると、場合によってはインデックス指定ではうまく取得できない可能性”があります。

 

オブジェクト名で指定する

最後にワークシートの取得にオブジェクト名で指定する方法を紹介します。

上の解決策がオブジェクト名指定である

オブジェクト名指定だとユーザーの操作によって、動作がうまくいかないということがほとんどなくなります

・シート名指定:ユーザーにシート名を変えられたらダメ!

・インデックス名指定:シートを動かされたり、新しくシートを追加されたらダメ!

・オブジェクト名指定:開発者画面でオブジェクト名を操作するユーザーはまずいない!

 

なので、ユーザーの行動を制限する必要がなくなるということです。

職場によっては、VBAで作ったツールに利用上のルールを設けているなんていうところもあるかもしれません。

『ブックの保護』で「シート構成」で保護して、シートが追加できないなんていうところもあるかもしれません。

 

そういったエクセルでの不便をなくすことができる指定方法であるといえます。

 

オブジェクト名指定の記述

オブジェクト名は下のように『プロジェクト エクスプローラ』で確認することができます。

今回はシート名Sheet1のオブジェクト名「obj1」で指定してみます。

例えば、下のようにSheet1のセルB1に”test”という文字列を入力という内容でやってみます。

 

ちなみに上のコードを実行した結果は下の通りです。

 

【おまけ】オブジェクト名を取得する

ちなみにオブジェクト名はコード上で取得することもできます。

上と同様、下の「Obj1(オブジェクト名)」を取得してみます。

下のようにシート名(または、インデックス)で取得することができます。

上のコードを実行すると下のような結果が得られます。

スポンサーリンク

コメント