エクセルマクロ・VBA達人養成塾 小川です。
キューバ旅行記、その78です。
キューバ屈指の外人向けリゾート地、バラデロにて。
バラデロ3日目の朝。
この日は、午前中、「Delfinario (デルフィナリオ)」という、イルカと遊べるテーマパークに行ってきました。
明日は、その写真を。
塾長のキューバ旅行記、最初から読みたい方はこちらから
前回の続きです。
前回のブログ: 「テストに役立つショートカットキー [Ctrl] + [End] – Excelマクロ・VBA」
「使われたセル範囲内の最後のセル」を調べるのに使えるコードは、以下のとおり。
以下のどれでも同じ動作をします。
Cells.SpecialCells(xlLastCell).Select ‘[2]
ActiveCell.SpecialCells(xlLastCell).Select ‘[3]
[1] は、僕好み。
[2] は、Excel 2003のヘルプで紹介されている書き方。
[3] は、自動記録で作ると出てくるコード。
まず、ヘルプの SpecialCells メソッドについての解説から引用。
構文は、以下のとおりです。
expression.SpecialCells(Type, Value)
ここで、 expression のところは、「対象となるオブジェクトへの参照を返すオブジェクト式を指定します」とのこと。
てことで。
ヘルプで紹介されているサンプル [2] では、Cells が指定されています。
「Cells」という言葉が前置きなく出てきた場合、 Application.Cells と書いたのと同値です。
ということで、ヘルプの「Cells」について紹介されている箇所から、「Application.Cells」についての解説を引用すると
とのこと。
つまり、セルの集合を返します。
ところが、自動記録で作ってみた [3] のコードを見てみると、「Cells」の代わりに、「ActiveCell」とある。
これは、どうも単体のセルを指定するのでもOKらしい。
ということで [1] のコードを試してみると、ちゃんと動く ヾ(´ー`)ノ
これでも動くなら、このほうがよいでしょう。
なぜかというと:
それにそもそも、「使われたセル範囲内の最後のセル」を調べるのに、シート上のすべてのセルをいったん参照する、というのも、仕事の流れとしてどうだか。
というところ。
特に、理由の最初に記載したことについて補足しておくと。
[1] の書き方の場合、アクティブでないシート上の「使われたセル範囲内の最後のセル」を調べるには、以下の書き方になる。直感的だ。
(アクティブでないシート上のセルに対して Select メソッドは使えないので、以下では、そのアドレスを取得)
[2] の書き方の場合、以下のとおりになる。
しかし、これでも、上記の理由2番目に記載した差は残る。
[3] の書き方の場合、そもそも「ActiveCell」という言葉が別シート上のセルを指すことを前提としていない言葉なので、直しようがない。
上記[4]か[5]の形にするしかない。
ということで。
いろいろ検討してみたが、[1], [4] の形が、いちばんすっきりする。
もっとも、慣れないうちは、自動記録で[2]の方法を自ら導いたり、ヘルプから[3]の方法を拾ってきたりするのでも十分。
というか、まずはそこまでできるなら、そんなあなたはとってもステキ☆
参考にしてください。
お知らせが2つ。
人気のセミナー2つを、久しぶりに開催します。
「親指シフト達人養成塾」
受講受付開始しました。ふるってご参加ください☆
ではでは (^^)/~