VBA 愛好家の備忘録

VBAを使用する中で疑問に感じたことなどを調べて紹介していきます。

excel vba でシートを指定する時の様々な方法

excel vba

シートを指定する時の様々な方法を紹介します。

 

方法1  オブジェクトの名前を指定する方法

 

f:id:ausutoraro12:20200604205236p:plain




 

上図のようにプロジェクトエクスプローラに表示されている

オブジェクトの名前を指定する方法です。

今回の場合sheet1がシートのオブジェクト名 サンプルがexcel上のシート名となります。

※オブジェクトの名前とexcel上のシート名前は異なるのでご注意ください

 

sheet1.range(sheet1.cells(1,1),sheet1.cells(1,1)).valule=1

 

実行結果

上記を実行するとオブジェクト名がsheet1のcell(1,1)に値が1と入力されます。

 

※別シートのセルをrangeとcellsを使用して使う注意点は過去記事を参照してください。

ausutoraro12.hatenablog.com

 

 

方法2  シートのindex番号を指定する方法

 

シートのindex番号とは、excel上のシート位置が一番左のシートを1として、その右隣のシートは2、またそのさらに右隣は3という考え方で、番号でシートを指定することができます。

 

sheet(1).range(sheet(1).cells(1,1),sheet(1).cells(1,1)).value=1

 

実行結果

excel上のシートが一番左のシートのcells(1,1)の値が1と入力されます。

※こちらの指定の仕方は、エクセル上のシート追加やシート削除などにより、シートの位置関係に変更が行われた時に参照先が意図せず変わってしまう可能性が高いのであまりお勧めしません。

 

 

 

方法3   シートの名前を指定する方法

 

こちらはエクセル上のシートの名前を指定する方法です。

 

書き方パターン1

worksheets("サンプル").range(worksheets("サンプル").cells(1,1),worksheets("サンプル").cells(1,1)).value=1

 

書き方パターン2

sheets("サンプル").range(sheets("サンプル").cells(1,1),sheets("サンプル").cells(1,1)).value=1

 

 

実行結果

サンプルという名前のシートのcells(1,1)の値が1と入力されます。

 ※こちらの方法では2つのパターンで記述することが出来ます。

 

 

以上、excel vbaを使用した時のシートを指定する方法を3パターン紹介しました。

私は方法3のエクセル上のシートの名前を使用してシートを指定する方法をよく使用しますが、エクセル上で名前を変更されてしまうとプログラムが正常に行われなくなってしまいます。そのような場合を回避するためにも方法1のオブジェクト名を使用してシートを指定する方法を使うのが一番無難なような気がします。