Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1980 / 13645 ツリー ←次へ | 前へ→

【70654】名前の範囲の左上、右下を求める りんご 11/12/12(月) 16:15 質問[未読]
【70655】Re:名前の範囲の左上、右下を求める kanabun 11/12/12(月) 17:06 発言[未読]
【70662】Re:名前の範囲の左上、右下を求める りんご 11/12/14(水) 9:49 質問[未読]
【70663】Re:名前の範囲の左上、右下を求める とおりすぎ 11/12/14(水) 15:18 回答[未読]
【70665】Re:名前の範囲の左上、右下を求める kanabun 11/12/15(木) 10:51 発言[未読]
【70666】Re:名前の範囲の左上、右下を求める りんご 11/12/15(木) 12:15 お礼[未読]
【70667】Re:名前の範囲の左上、右下を求める Jaka 11/12/15(木) 15:07 発言[未読]
【70678】Re:名前の範囲の左上、右下を求める りんご 11/12/16(金) 11:39 お礼[未読]

【70654】名前の範囲の左上、右下を求める
質問  りんご  - 11/12/12(月) 16:15 -

引用なし
パスワード
   よろしくお願い致します。

次のように名前が設定されています。

名前:AとB
範囲:A1:B10

このような時、プロパティ等で次の値を持ってきたいのですが、できるのでしょうか?

左上のA1
右下のB10


今は、RefersToから、A1とB10を持ってきています。
できれば、マクロではなく、プロパティ等で持ってきたいので、何か良い方法がありましたら、ご教授の程よろしくお願い致します。

【70655】Re:名前の範囲の左上、右下を求める
発言  kanabun  - 11/12/12(月) 17:06 -

引用なし
パスワード
   ▼りんご さん:
>名前:AとB
>範囲:A1:B10

> マクロでなく、マクロではなく、プロパティ等で
というところがよくわかりませんが、以下参考です。

 With Range("AとB")
   Debug.Print "最初のセル", .Item(1).Address(0, 0)
   Debug.Print "最後のセル", .Item(.Count).Address(0, 0)
 End With

【70662】Re:名前の範囲の左上、右下を求める
質問  りんご  - 11/12/14(水) 9:49 -

引用なし
パスワード
   ありがとうございます!
できました。

>> マクロでなく、マクロではなく、プロパティ等で
>というところがよくわかりませんが、以下参考です。

Refertoに、=Sheet1!$A$1:$B$10 と入ってくるので、最悪この文字列から左上と右下を持ってこようと思っていました。

重ね重ね申し訳ありませんが、ITEMというプロパティはウォッチで表示されていませんでした。(コーディング後は、表示されるようになりました。)

ウォッチで、「全てのプロパティを表示する」という設定があるのでしょうか?

【70663】Re:名前の範囲の左上、右下を求める
回答  とおりすぎ  - 11/12/14(水) 15:18 -

引用なし
パスワード
   >ウォッチで、「全てのプロパティを表示する」という設定があるのでしょうか?

そんなものは多分無い。

特定のObject型にどんなメンバがあるかは、オブジェクトブラウザで確認できる。
オブジェクトブラウザで右クリックして非表示のメンバを表示にチェック入れると、
隠しオブジェクトなどが表示されるようになる。

【70665】Re:名前の範囲の左上、右下を求める
発言  kanabun  - 11/12/15(木) 10:51 -

引用なし
パスワード
   ▼りんご さん:

.Itemプロパティとか .Countプロパティというのは
コレクションに必ず備わっているプロパティです。
コレクションというのは「同じ種類のオブジェクトのインスタンスの集合」です。
例えば、あるブックのワークシートの集合を「Worksheetsコレクション」といいます。
コレクションもオブジェクトとして扱います。ほとんどのコレクションの名前は
オブジェクトの名前の複数形になっています。

コレクション(集合)内の特定の要素を参照するときに.Itemプロパティを使います。
  ActiveWorkbook.Worksheets.Item("Sheet1") '"Sheet1"という名前のメンバ
.Itemのあとの()内にはシート名を入れてもいいし、インデックス番号で指定しても
いいのはご存知と思います。
  ActiveWorkbook.Worksheets.Item(1)  '左から1番目にあるシート
のように。
Range("AとB")も Rangeコレクションです。(複数形にはなってませんが)
ですから範囲内の「個々のセル」にアクセスする手段を.Itemプロパティが
提供します。.Countプロパティのほうはコレクション内の「要素数」を返します。
RangeコレクションはWorksheetsコレクションとちがい行方向と列方向の2次元の
コレクションなので.Itemプロパティの引数も .Item(行Index, 列Index) のように
指定できます。
たとえば、Range("AとB")コレクションの実際のセル範囲が [A1:B10]だったと
しますと、Range("AとB").Item(2,1) は [A2]セルを指します。
RangeコレクションのItemプロパティで面白いのは、.Item(3) のように引数を一つ
だけ指定して単一セルが指定できることです。
  [A1:B10].Item(3) は [A2]セルのことです。Itemプロパティの引数を一つだけ
指定すると、範囲の左上のセルをItem(1)としてまず右方向に第1行を移動し、
1行目が終わったらつづけて2行目を左から右へ...という順番でIndex番号が
振られます。
範囲内の「最後のセル」は範囲内の「要素の総数」と等しいので、
  n = Range("AとB").Count
  MsgBox Range("AとB").Item(n).Address(0,0)
として、"B10" が表示されるというわけです。

なお、
Itemプロパティは、通常、コレクションの「既定のプロパティ」であるため、
省略して表記されることが多いです。
  ActiveWorkbook.Worksheets.Item("Sheet1")

  ActiveWorkbook.Worksheets("Sheet1")
と表記されるのはこのためです。
Columns(1) とか Columns("A") というのは実は
Columnsコレクションの最初の要素、または"A"という名の要素という意味で
Columns.Item(1) とか Columns.Item("A")
の省略した書き方だったんです。

>重ね重ね申し訳ありませんが、ITEMというプロパティはウォッチで表示されていませんでした。(コーディング後は、表示されるようになりました。)
>
>ウォッチで、「全てのプロパティを表示する」という設定があるのでしょうか?
ちょっと意味が分かりません。
VBEのコードウィンドウ上で
Range("AとB").
とドットまで打ち込むと、下に利用可能なプロパティ・メソッドのリストが
ドロップダウンしますよね。そこに Itemプロパティも Countプロパティも
ありませんか? 
隠しプロパティなども表示したいときは
とおりすぎ さんのコメントにあるとおり [F2]を押して
> オブジェクトブラウザで右クリックして非表示のメンバを表示にチェック入れると、
> 隠しオブジェクトなどが表示されるようになる。
同時に、コード入力時の「ドットまで打ち込」んだときに表示される
「利用可能なプロパティ・メソッドのリスト」にも 表示されるようになります。

【70666】Re:名前の範囲の左上、右下を求める
お礼  りんご  - 11/12/15(木) 12:15 -

引用なし
パスワード
   kanabunさん、とおりすがりさん

親切ご丁寧にありがとうございます。
大変よく分かりました。(分かった気になっています。

>Range("AとB").
>とドットまで打ち込むと、下に利用可能なプロパティ・メソッドのリストが
>ドロップダウンしますよね。そこに Itemプロパティも Countプロパティも
>ありませんか? 

出てきます。

Itemが省略されているとは知らなかったので、Range("AとB")のウオッチの帯の展開時に表示されるものが全てと思っていました。

ただ、

Debug.Print "最初のセル", .Item(1).Address(0, 0)

と入れてから、帯を展開した時に Item1 が表示されるようになったので、全て表示していないのではと思い、質問しました次第です。

ありがとうございます。

【70667】Re:名前の範囲の左上、右下を求める
発言  Jaka  - 11/12/15(木) 15:07 -

引用なし
パスワード
   おまけ。
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=78;id=FAQ

Itemは、使ってないけど、というより使わないな。

【70678】Re:名前の範囲の左上、右下を求める
お礼  りんご  - 11/12/16(金) 11:39 -

引用なし
パスワード
   ▼Jaka さん:

おまけありがとうございます。
参考になりました。m(__)m

1980 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free