Excel VBA質問箱 IV

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

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


5091 / 13644 ツリー ←次へ | 前へ→

【52643】Areasはどのような役割をするのでしょう 07/11/23(金) 14:05 質問[未読]
【52653】Re:Areasはどのような役割をするのでしょう ichinose 07/11/23(金) 22:02 発言[未読]
【52666】Re:Areasはどのような役割をするのでしょう 07/11/25(日) 11:28 お礼[未読]

【52643】Areasはどのような役割をするのでしょう
質問    - 07/11/23(金) 14:05 -

引用なし
パスワード
   Areasについての質問です。

Dim R As Range, ckR As Range
 Set ckR = Range("A6:D65536").SpecialCells(2, 1)
  For Each R In ckR.Areas
  と
  For Each R In ckR
  とでは
    With R.Cells(R.Cells.Count).Offset(1, 1)
     .Value = WorksheetFunction.Sum(R)
    End With
  Next
End Sub

全く異なった結果が出ます。
このAreasというものはどのような理解をしたら良いのでしょう。
同じ結果が出そうなものですが。

【52653】Re:Areasはどのような役割をするのでしょ...
発言  ichinose  - 07/11/23(金) 22:02 -

引用なし
パスワード
   ▼北 さん:
こんばんは。

>Areasについての質問です。
Rangeオブジェクトは 、セル範囲は、A1:C3とか A9:C10などのように
連続した距形範囲ばかりではなく、
上記の連続していないふたつのセル範囲を一緒に存在させることも出来ます。
このとき、Areasコレクションが意味を持ってきます。
AreasコレクションによってRangeオブジェクトから二つの不連続セル範囲を
取得することが可能になります。

新規ブックの標準モジュールに
'===========================================================
Sub test()
  Dim cr As Range
  Dim rng As Range
  Set rng = Range("a1:c3,a9:c10")
  rng.Select
  rng.Copy
  MsgBox "この選択セル範囲を例にあげ、For Each文でAreasコレクションの要素を取得すると・・、"
  For Each cr In rng.Areas
    cr.Select
    MsgBox cr.Address
    Next
  Application.CutCopyMode = False
  rng.Select
  MsgBox "これをAreasコレクションではなく、セル範囲の要素を全て取得すると・・・"
  For Each cr In rng
    cr.Activate
    MsgBox cr.Address
    Next
  MsgBox "いかがですか?Areasの意味が見えてきましたか?"
End Sub

このコードを実行して見て、Areasの意味を確認してみてください。


>
>Dim R As Range, ckR As Range
> Set ckR = Range("A6:D65536").SpecialCells(2, 1)
>  For Each R In ckR.Areas
>  と
>  For Each R In ckR
>  とでは
>    With R.Cells(R.Cells.Count).Offset(1, 1)
>     .Value = WorksheetFunction.Sum(R)
>    End With
>  Next
>End Sub
>
>全く異なった結果が出ます。
>このAreasというものはどのような理解をしたら良いのでしょう。
>同じ結果が出そうなものですが。

【52666】Re:Areasはどのような役割をするのでしょ...
お礼    - 07/11/25(日) 11:28 -

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

素晴らしいコード頂きよく分かりました。
本当に有難うございました。
いつも楽しく見させていただいています。
これからもよろしくお願いします。

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