★独学者が1年後にExcelVBAを爆発的に伸ばすための最低限の基礎知識メモ(
(ダイジェスト):Vol0007:挫折しないための「プロパティ」とは?
  
バックナンバー目次ページは→こちらです。

まぐまぐのページは以下です。
https://www.mag2.com/m/0001691660.html
  
  
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)

Vol.0007

タイトル:挫折しないための「プロパティ」とは?
  
  
バックナンバー目次とサンプル号
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

前回の
「オブジェクトの取得方法」と「コレクション」の項ですが、かなり加筆をしました。

またこちらのバックナンバーを読んでみてください。
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01-06
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01
  

では、以降、今回分の本文です。
  

==================
  

いきなり補足です・・・。
  

★ プロパティ、メソッドとオブジェクトの関係について

プロパティもメソッドも、
「特定の単一オブジェクトやコレクションオブジェクトに紐付けされた」
「でも、関数・自作関数みたいなもの」
あるいは、
「特定の単一オブジェクトやコレクションオブジェクトに内包された」
「命令・機能みたいなもの」
と捉えるほうが、ヘルプとオブジェクトブラウザが使いやすくなると思います。
    
  
  

VBAには、
「VBA関数」、
「ワークシート関数」、
「自作関数(ユーザー定義関数・あるいはプロシージャ)」、などなど、
色々とありますけど、

▼関数は関数でも、

「特定の単一オブジェクトやコレクションオブジェクトに紐付けされた」
「特定の単一オブジェクトやコレクションオブジェクトでないと動かない」
「そういう・関数」

それが

「プロパティやメソッド」・・・

であり、

そしてその「関数」的なモノの中には、

「オブジェクトのプロパティ項目の値を読んだり書き換えたりするもの」
(プロパティ)
 ※値が書き換わることでExcelの動きや画面表示に変化が起こる、
  メソッドめいたプロパティもあります。

「コレクションオブジェクトや単一オブジェクトを返すだけのモノ」
(プロパティもメソッドも)

「値(文字ベースの一般データ)だけを返す、値の書き換えができないモノ」
(主にプロパティ)

「何らかの動き、だけをして、値もオブジェクトも返さないもの」
(主にメソッド)

「何らかの動きをしつつ、同時に、その動かしているモノをオブジェクトとして返すモノ」
(主にメソッド)

などなど、いろんなタイプの「関数」的なモノがあります・・・・

おおむね
「プロパティは設定系の関数」で、
「メソッドは動作系の関数」というイメージなんですが、
でも、細かく見ていくと、上記のように色んな動きをするプロパティやメソッドが存在します。
  
  

・・・・と、以上のようなイメージです。
  
  

どこかの講師さんが「メチャクチャなこと教えるな!」と怒り出したとしても、
そう覚えたほうが、ヘルプとオブジェクトブラウザが使いやすくなると思います。
  
  

※参考Webページ
よりちゃんとしたことを学びたい方は、手始めに以降に示したURL先を見てみてください。
ただ、「正確に奥深くを学ぼうとするあまり」、先にこちらを学ぼうとすると「かえって難しすぎてワケがわからなくなる」ので、
「オブジェクトを返す色んなタイプの自作関数が自由に作れる」あるいは
「クラスモジュールをある程度扱えるようになる」までは、あるいは、
「せめてオブジェクトブラウザが扱えるようになるまでは」、
前述のように「関数は関数でも、・・・」という風にとらえてください。
引数を持っていたり、名前付き引数が使えたり、カッコを付ける/付けないの基準が同じだったり、ということには変わりないので、「関数は関数でも、・・・」という風にざくっと捉えてしまうほうが、初心者のうち、とくに、「自作関数がまだ作れない場合」には、覚えやすいですので。
オブジェクトブラウザ自体も、「関数は関数でも、・・・」という風にとらえたほうが、「確実に」、覚えやすいし使いやすいです。
特に、以下の2つのサイトの前者のサイトは「とても参考になる良いサイト」ですが、ただ、メソッドをこのように正確?に理解してしまうと、多分、初心者の方は「オブジェクトブラウザが扱えなくなってしまう」と思います。
ここに書いてあることは、「関数は関数でも、・・・という風にざくっと覚えてオブジェクトブラウザが扱えるようになってから学ぶ」のでもぜんぜん遅くないです。なので、そのような感じで「深く正しく学ぶ」ということで大丈夫です。

VBA マクロ、プロシージャ、メソッドなどの用語について正確に理解する
「関数」と「メソッド」の違い
  
  
  

★ (10)挫折しないための「プロパティ」とは?

「プロパティ」とは、メソッドと同様に、
『 オブジェクトが保持・内包する「機能」、あるいは「命令」だ・・・』、
と捉えたほうが良いです。

「プロパティ=性質」などといった、それだけの理解だけで終わってしまうと、まず上達できません。

それだとオブジェクトブラウザが「全く読めない状況」に追い込まれてしまいますので・・・。

でも、市販書籍などがそう間違って教えるし、
ヘルプでも「オブジェクト、プロパティ、メソッド、およびイベントの概要」というヘルプページに、
似たような記述になっているので、やむを得ない部分もありますが・・・。

実際にはプロパティとは、「プロパティ=性質」だけで片付けられるモノではまったくありません。

そのような理解だと、ヘルプもオブジェクトブラウザも「永遠に」「読めません。」

現実に、プロパティの中には、最低限 以下の(a)~(c)などの機能をもつモノがあり、
その「動作の実現」は、「値やオブジェクトを返す自作関数」に似た仕組みでなされています。
(引数も使えるし、名前付き引数のルールが使えるし、カッコを付ける付けないのルールも同じだし、
値やオブジェクトを返してくれるし、設定(値の代入)もできるので。)

(a)オブジェクトの各種属性の設定の、その設定値を読み込んだり書き換え(=設定)したりする。
 (読み込みだけしかできなくて、設定ができないものもあります)

(b)下位の単一オブジェクトを取得する役割。
 (下位のコレクション+「Item」などを通じてや、直で、単一のオブジェクトを取得できます。)

(c)上位の単一オブジェクトを取得する役割。
 (××.Parentプロパティ、××.Applicationプロパティ、Range.Worksheetプロパティなど)

※もしかしたら、例外的に、「メソッドのように何らかの動きをしつつ、同時に、オブジェクトを返すモノ」もあるかもしれません。
でも、少ないと思います。
多くのプロパティは、上記の(a)~(c)の「どれか」にあてはまる「単機能」になってくる場合が多いと思います。
  
  

なお、「プロパティ」は、本来、「設定する」「もの」で、「命令の一種」なのですが、
「プロパティ」という言葉自体を「命令とはとらえずに」、「設定項目」とか「設定値」という意味合いで使うことも多いです。

その場合は、前後の文脈によって読み分けてください。

ただ、それは正式な使い方ではなく、繰り返しますが、本来なら「プロパティ項目」とか、「プロパティ値」と、しっかりと、明示的に「表現し分けるべき」で、実際、そうしたほうがしっくりくると思います。

また、「プロパティ」にも「メソッド」にも「設定値」がありますが、
「プロパティ」の「設定値」は、ユーザーが「自由に、そのテキストの内容を書き換える」ことで変更ができます。

「Activesheet.Name = "売上明細"」、といった感じで、「=」と自由な文言を使って書き換えることが可能です。

また、これは、VBEの「プロパティウィンドウ」で値をタイピングして書き換えることと同じですので、そのイメージを持ってください。(TrueやFalseなどは選ぶだけですが。メソッドの設定値と同様に、「列挙や定数を使っての設定」もあります。)
  
  

一方、「メソッド」にも「設定値」があり、もちろん変更ができます。

ただし「メソッド」の場合は、多くは、「列挙(Enum)」に含まれる「定数」といったかたちで、「設定値」が「あらかじめ決められて紐付けられて」おり、
「(多くは)ユーザーは勝手にはテキスト内容を書き換えできません」。

既に・あらかじめ存在する、(出来合いの)その設定項目たちや値たちを「選ぶだけ」になっています。

これは、Excel画面の各種ダイアログボックスで、丸ポチを付けたり、ドロップダウンメニューやリストボックスなどから設定値(定数など)を選ぶのと同じです。

そのようなイメージを持ってみてください。

  
  

==============

※★ 注意!!「プロパティ」とは「値」のことではない。あくまでも「機能であり、命令の一種である」。

その証拠に、
例えば「Worksheets.Count プロパティ」のヘルプには、
「コレクションに含まれる要素の数を表す長整数型 (Long) の値を返します。」と書かれています。

「コレクションに含まれる要素の数を表す長整数型 (Long) の値。」で終わっていません。
「コレクションに含まれる要素の数を表す項目。」という感じでも終わっていません。

これはどのプロパティでも同じです。

つまり、プロパティとは、「もともとは」「値」のこと・・・・「ではない」・・・、わけです。
「項目」のこと・・・でもないわけです。

オブジェクトブラウザで「Worksheets.Count プロパティ」を見ても、
その説明ペインには「Property Count As Long」と書いてあります。

「値を返す関数」を自作できる方ならご理解できると思うのですが、
「AS Long」ですから、「このプロパティはLong型の整数を"返します"。」と書いてあるわけです。
  

意訳すると、「Long型の整数を返す関数と同じですよ!」という意味のことが書いてあるわけです。

「プロパティは"値ですよ"、とは、、一言も書かれていない。」わけです。
  

※オブジェクトブラウザはAlt+F11でVBEの画面を出してから、F2キーを押すと出てきます。

  

ここから、

「プロパティ」は、「返す」という、「動き」、を、「する」、ということが分かります。

「メソッド」だけでなく「プロパティ」「も」、「返す」という、「動き」、を、「する」、ということが分かります。

「値を返す関数」と似た、「動き」、を、「する」、ということが分かります。

メソッドと同じように「動く」わけです。

「プロパティ」は、「値」のこと「そのもの」、を意味しているわけではない!!のです。

また、プロパティは、「設定」・「する」・・・という「動き」をするものも多いです
  

実際、オブジェクトブラウザには、どのプロパティでも、
「プロパティは"値"ではない」
「プロパティはいわば命令の一種だ。しかも、値やオブジェクトを返す命令の一種だ。」
「 "引数を持つプロシージャ"と似たものだ!」
と暗に・でも「明確に」、書かれています。

ヘルプも同様に、暗に・でも「明確に」、そう書かれています。

でも、市販書籍やWeb記事では、プロパティ=「値」とか「項目」と、表現することが多いです。

なので、(ヘルプを読む上では「値」と考えなくてもいいですが)、
市販書籍を読む上では「値」「プロパティ値」というニュアンスで考えてもよいかもしれません。

もちろん、「プロパティ項目」という意味でもいいかもしれません。
「意訳」の範疇に入ると思います。
(いずれにしても、本来の「命令・機能」という意味ではありません。「そこ」をちゃんと意識して、騙されないようにすることが重要です。)

  

以上のことからすると、例えば「Worksheet.Name プロパティ」の場合は・・・

「Worksheet.Name プロパティ」は、
「Worksheet」という単一オブジェクトの、
「Name」という「プロパティ項目」の、
「その値(=「プロパティ値」)」を、
「読んだり」、
「書き換えたり(設定し直したり)」、
「する」、
「そういう動きをする」、
「言わば関数やメソッドのように」、
「動く」、
「何らかの動きをする」、
「命令のこと」、

と理解することができます。
  

これは、ヘルプにも
「オブジェクトの名前を表す文字列型 (String) の値を取得、または設定します。」
と書いてあるので間違いありません。

他のプロパティも全部・同じです。

「・・・の値です。」という解説で終わっているプロパティは、基本、存在しないはずです。(もしかしたら例外があるかもしれませんが。)

「プロパティ」は、そもそも「設置値や項目のことだけ」を指すわけではない・・・・のです。

あくまでも「プロパティ」は、「動くモノ」なのです。

「関数のように」。

「Worksheet.DisplayPageBreaks プロパティ」などは、Tureを設定すると、
「指定されたシートにページ区切り (自動および手動の両方) を表示」します。
値の設定だけで終わっていません。なんだかメソッドのような動きです。

そんなプロパティだってあります。
  

ちなみに、VBAの中で、値として完結しているモノは、(「列挙(=Enum)」の中に含まれる)「定数」のようなものがそうだと思います。

プロパティは(最終的には)値でも項目でもないので「違う」と思います。
  

それを例えば・・・、

プロパティ=設置値(オブジェクトの性質・属性の)
とか
プロパティ=項目名
とだけ、

・・・理解してしまうと(そこどまりの理解で終わってしまうと)、

ヘルプとオブジェクトブラウザがまったく読めずに、
「テキトーな質の低い市販書籍やWeb記事」のウソを見抜けず、
「結果、エラーを自力解決できず」
「挫折する」
ということになってしまうのです。
  

ただ、これは「ヘルプでも」明示的に表現されていないのでやむを得ないのかもしれません。

が、それを「補足」するのが「講師」や「書籍の著者」の本当の役目だと思うんですが・・・
  

以上のことは、「メソッド」でも「同じような感じ」です。

  

なお、オブジェクトを「スチーム機能やその他の機能の付いた電子レンジ」と捉えると、(ちょっと強引すぎますがでもあえてですみませんが)  
「スチーム時間設定」「解凍時間の設定」といった「設定系の」「タッチボタン」は、「プロパティ」に相当します。

「スチーム開始」とか「レンジ開始」などの「タッチボタン」は「メソッド」に相当します。

  

どちらも「同じ」「タッチボタン(=命令・機能)」ですが、
「プロパティ」は主に「設定系」の「タッチボタン(=命令・機能)」で、
「メソッド」は主に「動作系」・「開始系」の「タッチボタン(=命令・機能)」・・・、
というイメージです。
(もちろん、オブジェクトを返すことに相当するようなボタンはありませんが。)

  

いずれにしても、プロパティもメソッドも、
オブジェクトの「中」に、保持・保有・内包される「命令・機能」、であり、
「その性格・できること、が少し違うだけ」で、
「両方とも」
「同じように」
「何らかの」、「動き」をする、「モノ」、
なのです。
  

「少し違うだけ」というのは、
「設定系」の「動き」をするのか
「動作メニュー系」の「動き」をするのか、
その
「動きの種類」

「ちょっとだけ」
「違うだけ」
ということです。

あとの仕組みはプロパティもメソッドも「全部同じ」なのです。
  

また、両者とも、「値やオブジェクトを返す自作関数」と似たような仕組みで動いています。
「あとの仕組み」とは、そういう意味です。

(※引数も必要だし、名前付き引数のルールが使えるし、カッコを付ける付けないのルールも同じだし、値やオブジェクトを返してくれるし、モノによっては設定(代入)もできます。)

  

なお、繰り返しになりますが、「何が」「親のオブジェクトになるのか?」と知りたい場合は、イミディエイトウィンドウやオブジェクトブラウザも活用します。

例えば イミディエイトウィンドウでなら、
「? TypeName(Application.Selection.Parent)」(=今選択しているモノの親)とか、
「? TypeName(Range("A1").Parent)」(=A1セルの親)とか、
でEnterすると、プロパティの親となるオブジェクトの種類(型)が返ってきます。

例えば、セル(=セル範囲=Rangeプロパティ)の親となるオブジェクトが何なのかを知りたい場合は、
あるセルをクリックにて選択してから「? TypeName(Application.Selection.Parent)」でEnterしたり、
直接セル番地を指定して「? TypeName(ActiveSheet.Range("A1").Parent)」でEnterしたりすれば、
「Worksheet」と返ってくるので、
『 あ、今のこの場合は、「Worksheet」が、Rangeプロパティの親のオブジェクトなんだな・・・』、と分かります。

※ちなみに
「? TypeName(ActiveSheet.Range("A1").Parent.Parent)」でEnterすると、
「Workbook」と、シートの上の階層、つまり、2階層上位の単一オブジェクトの
種類の名前が返ってきます。
「? ActiveSheet.Range("A1").Parent.Parent.Name」なら、
ブックの名前が返ってきます。
  

結果、「Worksheet」を「Range」の前にくっつけて、
「Worksheet.Rangeプロパティ」で検索すれば、ヘルプもWeb検索も正しい情報・求める情報がヒットする・・・、
ということになります。

一方、VBEのオブジェクトブラウザでなら、
「完全一致」で、「Excelライブラリ」だけに絞り、「Range」という語句で検索すると、
中段の「検索結果」のペインに、「Range」という名前の「何か」を持つモノたちがずらっと並びます。

で、一番右の列にならんだプロパティアイコンのモノが、「Rangeプロパティ」で、
真ん中の「クラス」の列に並んだものがその「Rangeプロパティ」の「親」となるオブジェクトです。

そして、その「検索結果」のペインのなか(真ん中の「クラス」の列)で、今目的としている「親」となるオブジェクトをクリックして、
そのままF1キーを押せば、
その親オブジェクトの場合「限定」の「Rangeプロパティ」のヘルプページが出てきます。
(なお、そのとき、「検索結果」のペインの下に在る「クラス」と「メンバー」のペインもそれに合わせて表示内容が変化します。そこで、他のプロパティやメソッド、イベントも調べられますし、目的のプロパティやメソッドが何を返すのかも分かります。)

いったん、ヘルプが開けば、あとはオブジェクトブラウザで親オブジェクト(クラス)を選び変えてF1キーを押せば、
ヘルプの画面の中の内容もどんどん切り替わるので内容の確認(差、違い)も確認しやすいです。

この使いかたとしては、Excel2010、2007のヘルプが高速に動くし、Webにつながなくても動くので秀逸です。
もちろん、2003以前のヘルプも。

2013以降のヘルプはWebに繋がれてしまい、Webがないと見ることができない上に、2010までのヘルプページの内容と比較すると、すごく内容がわかりづらくなってしまいました。
(オブジェクトメンバー一覧やそのサマリー的な説明の表が無くなってしまいました。)

そして何といっても2010までのヘルプと比べると、「遅い」、です。

「マイクロソフトやる気ないなー」という印象を受けます。
「どうせお前ら読まんだろ?ヘルプなんて。てか・そもそも読もうと思っても読めんだろ?お前らなんて?」と言われているみたいでもあります。

このため、Excelに限らず、Word、AccessなどのVBAを学ぶなら、ほんとうはバージョン2010や2003、2000などで学習するのがおススメはおススメです。(基礎はどれでも、ほぼ変わらないので。)
  

=================================

※★重要:「同名のプロパティやメソッド」における注意事項!!!!

プロパティの中にも、メソッドの中にも、それそれの中に、「同名のもの」が存在します。
例えば、プロパティの場合なら、「Font プロパティ」などです。
15個くらい、同じ名前の「Fontプロパティ」があります。

ただ、親オブジェクトが変わると同じ名前でも意味や動きが変わってしまうので、

「Range.Font プロパティ」とか、
「Style.Font プロパティ」とか、
「Range.Range プロパティ」とか、
「Worksheet.Range プロパティ」とか、

「親オブジェクトも含めて考えるクセ」にしないと、これも、すぐに挫折します。

  

オブジェクトブラウザで言うと、「検索結果」ペインとその下のペインで、
『「クラス」の列と「メンバ」の列を両方合わせて考えるクセにする 』、
ということです。

その場合、「クラス」が「親オブジェクト」という意味合いになります。

クラス(オブジェクトや列挙など)が変わると、同じ名前のプロパティやメソッドでも異なる動きとなります。

『 「自分が 今まさに操作しているオブジェクト」の、親オブジェクトが何なのか? 』を調べるには、
「TypeName関数+Parentプロパティ+イミディエイトウィンドウ」や、
オブジェクトブラウザやヘルプを利用すると早いです。
ヘルプでも、理想は「Range.Range」とか、「Worksheet.Range」と決め打ちして検索するのが好ましいのですが、
でもそれができない場合は「TypeName関数+Parentプロパティ+イミディエイトウィンドウ」や、オブジェクトブラウザを活用すると、
それができるようになります。

Parentプロパティを1個使うと1階層上、
Parentプロパティを2個使うと2階層上、
の親オブジェクトがわかります。
  
  

なお、このときの「親」は、「1階層分」までを考えていますが・・・・、
現実には「階層構造」というものがあるので、
もっと上の階層がひっついているケースもあり、
例えば「Worksheet.Range プロパティ」の場合なら、最上階層からたどると
「Application.Workbook.Worksheet.Range プロパティ」・・・みたいなニュアンスになります。
(この表現は便宜上のものです。実際に使わないでください。)

つまり、「Application.Workbook.」の部分が余分にひっついている・・・というよりも、
それを「省略して表現している」というイメージになります。

「Range.Range プロパティ」でも、
「Application.Workbook.Worksheet.Range.Range プロパティ」・・・みたいなニュアンスになります。
この場合は「 実は Application.Workbook.Worksheet.」が「Range.Range」にひっついているんだけど、でも、「省略して表現している」というイメージになります。

ここでも「省略」だらけ・・・・で本当に申し訳ありませんが、それは、オブジェクトモデル(階層構造)の一覧図を常に見ながら、「何が省略されているか?」をチェックしてみて下さい。

以下、上の図のもう少し広範囲なPDFです(すべてではありませんが)。
拡大表示して見てみてください。
https://euc-access-excel-db.com/00000WPPDF/object-model01.pdf
  
※なお、ここで言う「省略」とは・・・・、
『 Range("×××")」と書いただけだと「ActiveWorkbook.Activesheet」という2階層分が省略される』
・・・といった話とは意味が異なります。混同しないようにご注意ください。

強いて言うと、
「同名のプロパティやメソッドの場合、その親となるオブジェクトが変わると動きが若干変わるので注意してね!そしてそれと共に、その親のオブジェクトよりも上の階層のオブジェクトについては(何階層あるか分からないけど)自分で調べてちゃんと省略せずに書いてね!?とりあえず最小限の事だけヘルプに書いておくから。」
あるいは
「このオブジェクトの次にこのプロパティやメソッドを書いちゃうと、あなたの思ったとおりの動きにならないかもしれないよ?そうならないために、どのオブジェクトの次に書くのかをちゃんと調べてね?」
というニュアンスに近いと思います。

  

話が逸れてすみません。

あるいは、実際にイミディエイトウィンドウでParentプロパティを使って、
「? TypeName(×××.Parent.Parent)」
「? TypeName(×××.Parent.Parent.Parent)」
「? TypeName(×××.Parent.Parent.Parent.Parent)」
とか、
「? ×××.Parent.Parent.Name」
「? ×××.Parent.Parent.Parent.Name」
「? ×××.Parent.Parent.Parent.Parent.Name」
みたいなことをして
ご自分でも、「何が省略されているのか?」を調べてみてください。

このとき、「Workbook.Worksheets プロパティ」や「Window.Caption プロパティ」のように、そもそもオブジェクトモデル(階層構造)の一覧図の、上のほうの階層に存在するオブジェクトの場合は、あまり省略されていないので調べなくてもわかると思います。

でも、それよりも下の階層のオブジェクトだと、「何かが省略されている場合が多い」ので、調べる必要性が出てくると思います。
たとえば「自力でのエラー解決」をより早く行いたいなら、必須の作業だと思います。

最初のうちは面倒かもしれませんが、慣れればやる回数もどんどん減ってきますので、それほど面倒でもありません。

最後にはエラーが出たときだけやればいい、という感じになります。

でも、初心者のうちになんどもやって、理解が広がれば、エラー時に何もしなくてもエラーの解決ができる、そのような「技術のひとつ」にもなります。

ちなみにですが、

たとえば「Range.Range プロパティ」の場合なら・・・、
イミディエイトでは、例えば・・・・、

? ActiveWorkbook.worksheets("sheet1").Range("B1:D3").Range("a2").parent.name
Sheet1

とか、

? ActiveWorkbook.worksheets("sheet1").Range("B1:D3").Range("a2").parent.parent.name
Book1

といった調べ方ができます。

「Range.Range プロパティ」のうち、最初の「Range」が
「ActiveWorkbook.worksheets("sheet1").Range("B1:D3").」を意味していて、
2つ目の「Range」が
「Range("a2").」を意味しています。

「Range.Range」の1つ親はワークシート
2つ親はブック、ということになるんだと思います。

階層の省略はあまり良くないのですが、うまく呑み込めないうちは、
最初の「Range」が「Range("B1:D3").だけ」を意味している・・・
と考えると考えやすいかもしれません。

  

==============================
  

今回は以上です。

==========================================================================

バックナンバー目次とサンプル号
  
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01
  
  

----------------------------------------------------------------------
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)
発行システム:『まぐまぐ!』 http://www.mag2.com/
配信中止はこちら https://www.mag2.com/m/0001691660.html
----------------------------------------------------------------------