[[20160922104935]] 『cellsにつき、少々混乱しています。』(snb1001) ページの最後に飛ぶ

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

 

『cellsにつき、少々混乱しています。』(snb1001)

 おはようございます。いつもお世話になっております。
さて、今日の質問は二つです。

Sub cellsにつき()

    Dim r As Range
    Dim adr1 As String  '※1 
    Set r = Range("b6:e9")
    adr1 = r.Cells(0, 1).Address(False, False)  '※2
End Sub

※1 定義につき:なぜ、adr1は「Range」にすると走らないのに、文字列「String」にすると走るのか?
イミディエイトウィンドウで「adr1」をみると「b5」なので 「範囲」だと思うのですが・・・。
※2 cellsのカッコ内の順番;cells(0,1)をcells(1,0)に変えてイミディエイトウィンドウで「adr1」をみると「A6」でした。このことよりcellsのカッコ内は(列、行)の順番となる、と思ったのですがマニュアルなどで見るとcells(行、列)とあります。
少々混乱しています。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


こんにちは。

※1 addressプロパティがstring型を返すから
※2 Msgbox Range("A1").cells(1,1).address(false,false)が"A1"だから。
   cellsプロパティはoffsetとは違う。

( 佳 ) 2016/09/22(木) 11:27


佳さま
さっそく回答をいただきありがとうございます。

最初の質問※1について
「adr1」には最初の定義で「文字列」としか教えていないので
イミディエイトウィンドウで見る「b5」はあくまでも文字列ですよね。

ところが「adr1 = r.Cells(0, 1).Address(False, False)」のところの
「.Address(False, False)」(これがプロパティーですか?)を読み取って
内部で「アドレス」に読み替えている、ということでしょうか。

もう一つの質問の※2について
cellsとoffsetの違いがあることは理解できました。

まだよくわかっていないのは
「adr1 = r.Cells(0, 1).Address(False, False)」とすると行を一つ上がった「B5」
を指しますが、「adr1 = r.Cells(1, 0).Address(False, False)」とすると列が一つ
左に動きました。
このことから、自分は「r,cells(△、○)とあったら△は列方向、○は行方向だな」
と理解したつもりでいました。つまり、列、行の順番だな、と。

ところがマニュアルには「cells(○、△) で、○は行、△は列 の順番になっていました。

実物のマクロが先に書いたものです。マニュアルと実際のマクロの動きが違っている・・・?

(snb1001) 2016/09/22(木) 12:17


横入り失礼

>内部で「アドレス」に読み替えている、ということでしょうか。
そうです。
アドレス文字列 です。

・型はあくまで形式(この場合、文字列)を示したものです。
・それがどんなものを意味するか(アドレスを示す文字列だとか)は関係がありません。

後半。
余りむずかしく考えずに、
Cells(2,3) は、C2セルのことだ、ということから意味を読み取ってください。

>「adr1 = r.Cells(1, 0).Address(False, False)」とすると列が一つ 左に動きました。
指摘がありましたようにCells(m,n)のm,nはいずれも 1 が起点を示します。
0 = 1 +(-1) と考えれば、列が左に動く意味がわかるでしょう。
(γ) 2016/09/22(木) 12:37


γさま
過日もお世話になり、ありがとうございました。

なお、今回、自分の誤りの原因がやっとつかめました。

cells(0,1)とあったとき
「0(ゼロ)」が「移動しない方向」だとばかり思っていましたが
実は
「1」が「移動しない方向」だったんですね。

「cellsプロパティはoffsetとは違う。」の意味もようやく解りました。

思えば「offset」のときに
ActiveCell.Offset(1, 0).Select
はアクティブセルから行方向に1、つまり1つ下のセルを選択
(移動しない方向については省略可能、つまり「ゼロ」)
でしたから、このことと混同していました。
初めて知りました(^_^;)

佳さま
γさま
ありがとうございました。

(snb1001) 2016/09/22(木) 13:04


コメント返信:

[ 一覧(最新更新順) ]


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