Square Beat Engine

Blog for variety of things…

MS-Office

[Excel][VBA] 名前付きセル範囲の参照

投稿日:2015-10-29 更新日:

VBAで名前付きセル範囲を参照する方法は複数ある。

よく混乱するので、ちょっと整理しておく。

コード例

それぞれの方法の特徴

Range(strListName)

最も簡単な記述方法だが、他のワークブックと連携させる場合、誤動作を招く恐れがある。
したがって、お勧めしない。

ThisWorkbook.Worksheets(“Sheet1”).Range(strListName)

ワークシートまできちんと指定しているので、正しく動く。
ただ、名前付きセル範囲はワークブックのどこからでも呼び出せるのがメリットなのに、ワークシートを指定する必要があるためスマートではない。

ThisWorkbook.Names(strListName).RefersToRange

今回オススメする方法はこちら。
Namesコレクションはワークブックの直下だから、セル範囲の名前だけで指定可能だ。
.RefersToRangeプロパティは、名前付きセル範囲のRangeオブジェクトだ。
ほかにもいろいろあるので、詳しくはヘルプを参照してほしい。

まとめ

Namesを使おう、というのが結論。
ほかの方法でも動作はするので、違いを理解しておけばなおよし。

以上!

-MS-Office

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

[Excel][VBA] ワークブック・ワークシートを明確に指定

前々回・前回に引き続き、セルに文字列を記入するときのコードについて考えてみます。 今回は、ワークブック・ワークシートを明確に指定する必要性を検討します。 なぜ指定するのか セルの操作をする際、ワークシ …

[Excel][VBA] オブジェクト名のワナ

Excel 2010のVBAで、ActiveXコントロール(VBA内ではOLEObject)の名前に罠があることに気づいたのでメモ。 「OLEObjectがうまく動作しない!」と嘆く誰かを1人でも救い …

[Excel][VBA] リストボックスがクリアされてしまう問題

ActiveXコントロール(OLEObject)のリストボックスは、セルに何かを書き込んだりすると、選択状況がクリアされてしまう。 正確には、自動計算をOFFにしておけばクリアされないのだが、通常は自 …

[Excel][VBA] 行列入れ替えを伴う値の転記

以前書いたように、エクセルで値を転記する場合は、クリップボードを経由せずにValueプロパティを使う方法を勧めている。 しかし、クリップボード経由だと簡単なのに、経由しない場合だと面倒なものがある。 …

[Excel][VBA] エクセルVBAではValueプロパティを指定しよう

前回は、自動記録マクロの問題点を3つ挙げ、1つめのSelectメソッドの無駄を指摘しました。 今回は、2つめのFormulaR1C1プロパティについて考えます。 プロパティの指定 FormulaR1C …