[[20180511142846]] 『ListRows(1).Rangeのrangeの働き』(hiro) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ListRows(1).Rangeのrangeの働き』(hiro)

ActiveSheet.ListObjects(1).ListRows(1).Range.Select
なぜ、rangeが必要なのでしょうか。
このrangeはどういう働きをしているのですか?

そういうものならばそういうものとして覚えますが…

よろしくお願いします。

< 使用 Excel:unknown、使用 OS:unknown >


http://www.relief.jp/docs/excel-vba-table-select-a-row.html
紹介ばかりですみません。私も共に勉強させて頂いております。
上記URLはご覧になりましたか。まだでしたら、ご一読を。。。 ^^
Rangeオブジェクトは奥が深いと思います。
この校内でも話題に上がりおおいに勉強させていただいた記憶があるのですが
リンク先を失念しています。思い出したらUPします。
_Default
Item
Range
とか他にも様々なプロパティが存在し興味深いです。
オブジェクトブラウザーで検索すると色々表示され、その項目を検索して調べていると
飽きませんよ。とても勉強になります。
では

(隠居じーさん) 2018/05/11(金) 19:01


メソッドやプロパティがないから別のオブジェクトを用意して…というのは、私も何かの書籍で見た覚えがあります。それだったのですね。
Rangeは本当に学ぶことが多いですね。

Object Browserは少し見ただけではどういうものかよくわからなかったのですが、知らなかったので、時間があるときに見てみます。情報有難うございます。

自分ではうまく見つけられないこともあるので、紹介でも助かります。
ありがとうございます。
(hiro) 2018/05/11(金) 19:27


 >なぜ、rangeが必要なのでしょうか。

 逆に、なぜ要らないと思ったのか知りたいですね。
 それが分かれば、答えも考え易くなります。

 >このrangeはどういう働きをしているのですか?

 「このRange」とは何を指していますか?
   Rangeプロパティ?
   Rangeオブジェクト?
   まさか、Rangeと言う文字・・じゃないですよね?

 ヘルプは、こうなっています。
       ↓
 ListRow オブジェクト メンバー 
  Rangeプロパティ:上位リストの指定されたリストオブジェクトが
           適用される範囲を表すRange オブジェクトを取得します。 

(半平太) 2018/05/11(金) 20:04


 >ActiveSheet.ListObjects(1).ListRows(1)


アクティブシート上のテーブルのデータ欄の位置行目

という意味で、セル範囲として表現されていません。
これを、セル範囲として取得したいなら、
そのオブジェクト(=ListRowsオブジェクト)のプロパティ(=Rangeプロパティ)から、
セル範囲を取得することになります。
(まっつわん) 2018/05/12(土) 08:28


ありがとうございます。
>逆に、なぜ要らないと思ったのか知りたいですね。
そもそもlistrowオブジェクトという概念をうまく把握できないまま質問しているので。いらないと思った理由を答えるのも難しいですね。すみません。

ActiveSheet.ListObjects(1).ListRows(1)
アクティブシートの1つ目のテーブルの1行目
だけでは形のない情報だけのような感じでしょうか。
rangeによって初めて、excel上で形のあるセルを扱えるようになるというような…

(hiro) 2018/05/12(土) 14:14


 >形のない情報だけのような感じでしょうか。
イメージとしては逆かなぁー
たくさんの情報の塊として存在していて(=オブジェクト)、
その中のセル範囲としての情報(=プロパティ)を抜き出す感じで解りますかね?

(まっつわん) 2018/05/12(土) 14:20


 >ActiveSheet.ListObjects(1).ListRows(1) 
 >アクティブシートの1つ目のテーブルの1行目 
 >だけでは形のない情報だけのような感じでしょうか。
           ↑
 実体だけあって、何をするか・何を持っているのか(両方合わせてメンバーと総称する)が
 分からないモノです。(つまりオブジェクトですね)

 そのオブジェクトのメンバーには何があるかは、ヘルプなどで調べる必要があります。

 ただ・・調べる前の状態として、自分は何をやりたいのか、それがクリアになっている必要があります・・よね?

 1行目に何をしたかったんですか?
 Selectですか?(例示された、ステートメントからはそう読めます)

 「1行目のオブジェクトなんだから、Selectメソッドを持っているのは当然だよね」

 そこで、こうやってみたんですね。
 ActiveSheet.ListObjects(1).ListRows(1).Select 

 ところが、「オブジェクトは、このプロパティまたはメソッドをサポートしていません」
 なんてエラーを返して来やがった。

 「何故、当たり前なメンバーが無いんだ!  よくよく調べたら、
  Rangeプロパティを噛ませないといけないと分かったんだけど納得いかないね」

 私としては、そう言う返答が欲しかった。

 おっしゃる通りです。
 マイクロソフトの新米SEが手を抜いたんでしょうね。

 俺は今日デートがあるんだ、Rangeプロパティを作ってあって、
 それで、Rangeオブジェクトは取得できることにはしたんだから
 それを使って貰えばいいよね。
 「おっといけねぇ、デートに遅れちゃう」ってなもんです。

(半平太) 2018/05/12(土) 17:27


まっつわん様
一つ前でもオブジェクトとプロパティと書いていてくださったのに、すみません…。
二つの基本概念の知識が、ヘルプの説明とうまく結びついていませんでした。

たとえばRangeオブジェクトと、そのプロパティのValueプロパティと同じイメージでよいということですね。この二つは、セルに関する情報の集合体と、そのなかの一つの特徴や属性ですよね。

半平太様
このコードは書かれていたものであって、書こうとしたものではないんです。
なんだか熱く語ってくださったのにごめんなさい…。
説明不足でした。
(hiro) 2018/05/14(月) 23:18


 >このコードは書かれていたものであって、書こうとしたものではないんです。

 薄々感じていましたよ。なので、こう聞いたんです。Selectしたがる人なんて、そういないですから。
                 ↓
 > ただ・・調べる前の状態として、自分は何をやりたいのか、それがクリアになっている必要があります・・よね?
 > 1行目に何をしたかったんですか?
 > Selectですか?(例示された、ステートメントからはそう読めます)

 何をやりたいかが決まっていなければ、何かを調べようとすること自体考えにくいです。

 なのに疑問が出て来た事も、私には不思議なんですけどねぇ。

 ・・その時は何があったんじゃないかと思いますが、整理して言葉に出来るほどじゃないんでしょうね。

(半平太) 2018/05/14(月) 23:33


半平太様

確かに答えようと思えば答えられます。
すでに本来の疑問が解消されたので、その件に関する言及は控えただけです。

わかりにくい書き方でお手数おかけして、すみません。

(hiro) 2018/05/15(火) 09:31


 >たとえばRangeオブジェクトと、そのプロパティのValueプロパティと
 >同じイメージでよいということですね。
まぁ、ほぼほぼそんな感じです。

ただ、ListRowsオブジェクトがほぼほぼRangeオブジェクトと同意なので、
わざわざ、Rangeと書かせなくてもいいのになと思う気持ちはわからなくもないですが、
そういう設計がされているので、利用者は従う以外ないのです。

クラスモジュールで自作して自分好みにListObjectsクラスと同様な機能を定義することも可能ですが、
自作する意味は薄いでしょう。
ただし、クラスモジュールの使い方の勉強のテーマとしては面白いとは思います。。。

(まっつわん) 2018/05/15(火) 09:45


まっつわん様

再度ありがとうございます。
あのようなイメージで良いのですね。

ただ、あまり深くは考えないように気をつけます。
そのまま覚えていた方が良さげ、ですね。
(hiro) 2018/05/15(火) 14:37


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.