[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『rng as Rangeって?』(ひめ)
とても基本的な、そして、愚かな質問だと思われるかもしれませんが、初心者なので教えてください。
Dim rng As Range
と宣言して、そのあと、
rng.Address
というのをみかけます。
この場合のrngには、たとえばですが、A3という番地が入っているのかなとおもっていましたが、Addressをつけるということはrngには何が入っている(何を指している)のかわからなくなりました。
どなたかおしえてください。
< 使用 Excel:Office365、使用 OS:Windows10 >
ちょっとつかみづらいかもしれませんが↓は「rng」というRange型(オブジェクト型)の変数を宣言しています。
Dim rng As Range
そして、宣言した段階では空っぽ(Nothing)の状態になっています。
そのあと、たとえば↓のようにすると「rng」という変数にA3セルが格納されます。
Sub test() Dim rng As Range
Set rng = Range("A3") MsgBox rng.Address '↑と↓は同じ意味になる MsgBox Range("A3").Address End Sub
普通の変数とはちょっと違うのでイメージがつかみにくいとは思いますが、オブジェクト変数にはオブジェクトそのものが格納されているということになります。
(もこな2) 2022/06/25(土) 22:11
あー、そうですよねえ。疑問ですよね。 Rangeなど、オブジェクトというものの仕組みを理解する必要があります。
(0) まあ、ここで説明を聞いても余りピント来ないと思います。 使っていくうちに、ああ、なるほどそういうものか、と思う(諦める?違うな)時が来ますので、 それまで、もう少しつきあってやってください。
(1) 普通の変数は、 ・数値とか、 ・文字列だとか、何が入っているか明確ですよね。
これに対して、Rangeオブジェクトは、 何が入っているか一言では言えないんですね。 質問の仕方で、返って来るものがそれぞれ違うという、そういう奴なんですよ。
・rng.Value とすると、そのセルに入っている値が返ってきますし、 ・rng.Address とすると、そのセルのアドレスが返ってきます。 ・rng.Formula とすると、そのセルに入っている式が返ってきます。
こういうのをオブジェクトの「プロパティ」といって、そのオブジェクトの属性や性質を表します。 種類が色々あって、どのプロパティを使うかによって、返ってくるものが違ってきます。 どんなプロパティがあるか、Rangeオブジェクトのヘルプを見てください。
(2) もうひとつ、Rangeオブジェクトには、なにかの動作をさせる「操作命令」もあります。 例えば、 ・rng.Copy とすると、そのセルをコピーします。 ・rng.ClearContents とすると、そのセルに入っている数式や値を消去します。 こういうのを、オブジェクトのメソッドと呼びます。
(3) このように、オブジェクトには、プロパティ(その属性)や、メソッド(操作)が備わっています。 ですから、何が入っているか、というと、 そうしたプロパティやメソッドが詰まっていて、 それを適宜選んで利用する、ということになります。
やっぱり分かりにくいね。で、(0)に戻ります。 (γ) 2022/06/25(土) 22:40
> Dim rng As Range
> Set rng = Range("A3")
これで単純に、rng という変数に Range("A3") セットされる。そのままなんですが。
rng に Range("A3") がセットされているから、A3セルそのもの
rng.select
とやれば、A3セルが選択されるし、
msgbox rng.value
とやれば、A3セルの値が表示されるし。
英文そのままなので解りやすいと思いますけど。
Dim rng As Range
Set rng = Range("A3:B10")
rng.select
とか試してみれば。
(難しいですか?) 2022/06/25(土) 23:21
素人のアホな質問に丁寧に回答くださって本当にありがとうございました。でも勇気をだして質問をしてよかったです。
これから精進します。
ありがとうございました。
(ひめ) 2022/06/26(日) 08:37
例えば
Dim rng As Range
Set rng = Range("A3:B10")
rng.Select
MsgBox rng.Address(External:=True)
色々研究してください。
Dim rng As Range
Sheets("Sheet1").Select
Set rng = Range("B2")
ActiveSheet.Range("B2").Value = "www"
Sheets("Sheet3").Select
Range("B2").Value = "ppp"
MsgBox rng.Value
(難しいですか?) 2022/06/30(木) 05:36
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.