本記事では『ワークシートの取得』の解説をしていきます。
その取得の仕方として「シート名を指定する」「インデックスで指定する」「オブジェクト名で指定する」の3つを解説していきます。
シート名で指定する
ワークシートはシート名で取得することができます。
ワークシートをシート名で取得する記述は下の通りです。
1 2 3 4 5 6 7 |
Sub Sample1() Dim sheet1 As Worksheet Set sheet1 = Worksheets("Sheet1") '--- シート名で指定 End Sub |
注意開発者以外でもエクセル操作時にはシート名を変更することができてしまいます。
なので、ツールの仕組みを知らない人がもしも”シート名を変更してしまったら、この指定の仕方ではシートが取得できなくなる”ということを覚えておきましょう。
インデックスで指定する
Worksheetオブジェクトの集合がWorksheetsコレクションです。
なので、ワークシートを取得する際にはインデックスで指定することもできます。
上の画像のような場合の”Sheet1”シートを取得するコードは下の通りです。
1 2 3 4 5 6 7 |
Sub Sample2() Dim sheet1 As Worksheet Set sheet1 = Worksheets(1) '--- インデックスで指定 End Sub |
オブジェクト名で指定する
最後にワークシートの取得にオブジェクト名で指定する方法を紹介します。
上の解決策がオブジェクト名指定である
オブジェクト名指定だとユーザーの操作によって、動作がうまくいかないということがほとんどなくなります。
・シート名指定:ユーザーにシート名を変えられたらダメ!
・インデックス名指定:シートを動かされたり、新しくシートを追加されたらダメ!
・オブジェクト名指定:開発者画面でオブジェクト名を操作するユーザーはまずいない!
なので、ユーザーの行動を制限する必要がなくなるということです。
職場によっては、VBAで作ったツールに利用上のルールを設けているなんていうところもあるかもしれません。
『ブックの保護』で「シート構成」で保護して、シートが追加できないなんていうところもあるかもしれません。
そういったエクセルでの不便をなくすことができる指定方法であるといえます。
オブジェクト名指定の記述
オブジェクト名は下のように『プロジェクト エクスプローラ』で確認することができます。
今回はシート名Sheet1のオブジェクト名「obj1」で指定してみます。
例えば、下のように「Sheet1のセルB1に”test”という文字列を入力」という内容でやってみます。
1 2 3 4 5 |
Sub Sample3() obj1.Range("B1").Value = "test" End Sub |
ちなみに上のコードを実行した結果は下の通りです。
【おまけ】オブジェクト名を取得する
ちなみにオブジェクト名はコード上で取得することもできます。
上と同様、下の「Obj1(オブジェクト名)」を取得してみます。
下のようにシート名(または、インデックス)で取得することができます。
1 2 3 4 5 6 |
Sub Sample4() Debug.Print Worksheets("Sheet1").codeName '---「Worksheets(1).codeName」でも取得できる End Sub |
上のコードを実行すると下のような結果が得られます。
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク