Home » いちばんやさしいExcel VBAの教本 » 引数を指定できないCells・Rows・Columnsプロパティを使った本当のコード

引数を指定できないCells・Rows・Columnsプロパティを使った本当のコード

対象:Excel 2010, Excel 2013, Windows版Excel 2016

Cells、Rows、Columnsプロパティは引数を指定できない

拙著『いちばんやさしいExcel VBAの教本』の、p.244のワンポイントに、

このChapterでは「Cells、Rows、Columnsプロパティの引数」といった解説を行ってきましたが、この解説は厳密には正しくありません。本当は、Cells、Rows、Columnsプロパティが、引数を指定できないプロパティだからです。

と書きました。

本当は引数を指定できないのに、引数を指定しているかのように見えるCells・Rows・Columnsプロパティを使った、オブジェクトを取得・操作するコード(オブジェクト式)が、本来どのようなコードなのかを、補足しておきます。

但し、あくまでも、Rangeオブジェクトを取得するコードを、深く知っておきたいという方に向けてご紹介するのであって、「_Defalut」を省略せずに書くことを勧めるものでは、決してありません。

このあとご紹介する省略しない書き方をご存知の方は、かなり少なく「_Defalut」が書かれていると、コードを読み辛く感じるExcel VBA経験者のほうが圧倒的に多いはずです。

Rangeオブジェクトの既定プロパティをあえて書いてみる

Cellsプロパティ・Rowsプロパティ・Columnsプロパティで取得したRangeオブジェクトの、既定プロパティ「_Default」をあえて書くと以下のとおりです。

Cellsの場合

拙著で何度も登場する、A1セルを選択する、
  Cells(1, "A").Select
といったコードは、以下のコードの省略形です。
  Cells.[_Default](1, "A").Select

Rowsの場合

拙著のLesson 63「行全体・列全体を表すRangeオブジェクトについて学習しましょう」で解説している、1:5行目を選択する、
  Rows("1:5").Select
というコードは、以下のコードの省略形です。
  Rows.[_Default]("1:5").Select

Columnsの場合

Lesson 63「行全体・列全体を表すRangeオブジェクトについて学習しましょう」に登場する、A:C列を選択する、
  Columns("A:C").Select
というコードは、以下のコードの省略形です。
  Columns.[_Default]("A:C").Select

_Defaultはコード入力時にヒント表示されている

実はRangeオブジェクトの既定プロパティ「_Default」は、コードを入力するときに、しっかりとヒントとして表示されています。

Cellsプロパティを入力しようとした場合は下図のように、

Cellsプロパティ

Rowsプロパティを入力しようとした場合も下図のように、

Rowsプロパティ

Columnsプロパティを入力しようとした場合も下図のように、

Columnsプロパティ

それぞれ表示されています。

そして、_Default([RowIndex], [ColumnIndex]) の後ろに「As 〇〇」といった表示がないので、Rangeオブジェクトの_Defaultは戻りはVariantです。

先にも書いたとおり、実務で利用するSubプロシージャに「_Default」を書くことは、まったくお勧めしませんが、オブジェクトを取得・操作するコードについて理解できてきて、Rangeオブジェクトについて、より深く知りたいと思ったときに、この記事を思い出してください。

[スポンサードリンク]

Home » いちばんやさしいExcel VBAの教本 » 引数を指定できないCells・Rows・Columnsプロパティを使った本当のコード

「いちばんやさしいExcel VBAの教本」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.