Square Beat Engine

Blog for variety of things…

MS-Office

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

投稿日:2014-12-21 更新日:

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

なぜ指定するのか

セルの操作をする際、ワークシートを明確に指定しないと、アクティブなワークシートを対象に操作が行われることになります。
ワークシートをActivateすれば意図した通りに操作可能ですが、冗長です。

具体的な書き方

指定しなくとも正しく動く場合は問題ない、といいたいところですが、以下の理由から必ず指定するのが望ましいと思います。

  • コードの可読性が落ちる。
  • コードを拡張したときのバグの温床となる。
  • 必要なときに指定するのを忘れがちになる。

同じ理由から、ワークブックも指定しておけばよりよいでしょう。

 

コード例

ワークブックとワークシートを明確に指定し、セルの操作をする場合、以下のような感じとなります。

 まとめ

自動生成されたコードには、無駄が多いと言えます。
こんな単純な例でさえ、修正箇所がいくつもあるのです。
有用なマクロを作るためには、マクロ記録を活用しつつも、VBAの仕組み・ルールに則ったコーディングが必須だと思います。

以上!

-MS-Office

執筆者:


comment

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

関連記事

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

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

[Excel][VBA] シートを新規ワークブックにコピーする方法

既存のシートからワークシートを新規シートにコピーする。 手動の場合は、新規ワークブックを選択するだけでよい。 VBAでは以下のメソッドを用いる。 コード例 [crayon-5bf039d20bc988 …

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

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

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

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

[VBA] ユーザー定義型の使い方

VBAでは、自分で型を定義することができる。 異なる値をひとまとめに扱いたいときに使うと、取り扱いがぐっと楽になる。 ユーザー定義型の構文 宣言部分(モジュール内の冒頭、Optionalのすぐ後)に、 …