【Excel VBA】Rangeオブジェクトの左上のセルを取得する方法は?


Dim myRange as Range
myRange = Range("A1:C3")

Dim currentCell as Range
currentCell = Range.firstCell ' そんなメソッドは無い

myRangeオブジェクトからセルA1のRangeオブジェクトを取得するにはどうすれば良いのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/12/02 22:05:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント100pt

Range の設定は Set が必要ですが、

Sub SelectLeftTopCell()
    Dim myRange As Range
    Set myRange = Range("A1:C3")

    Dim currentCell As Range
    Set currentCell = myRange.Resize(1, 1)

    currentCell.Select
End Sub

という感じでどうでしょうか。

id:nannde

ありがとうございます!速い!!(^^)

> Range の設定は Set が必要ですが

ご親切ありがとうございます!!

2009/12/02 22:05:11
  • id:nannde
    すみません。誤植です。Range.first... -->> myRange.first...
    currentCell = myRange.firstCell ' そんなメソッドは無い
  • id:HALSPECIAL
    HALSPECIAL 2009/12/03 08:28:01
    完全に出遅れましたが、

    方法1
    currentCell = Range("A1:C3").Range("A1").Value '選択範囲中でA1の位置ということ
    方法2
    currentCell = Range("A1:C3").Item(0).Value 'コレクション中の先頭ということ

    でもいけるかと。

    方法1の補足
    currentCell = Range("B1:C3").Range("A1").Value
    だったら、B1が基点(A1)になり、B1を返します。
    たぶん。
  • id:Mook
    回答の方法は単純な矩形領域だとよいのですが、
    Set MyRange = Union(Range("A1:C3"), Range("B2:D5") )
    のような複数の領域を合わせた場合だと、Resize でオブジェクトエラーとなってしまいました。

    その際にもHALSPECIAL さんの提示された方法だと機能しますね。
    Range("B1:C3").Range("A1")
    という記述は座標体系が二重になるので直感的にはわかりずらそうけれど、
    覚えておくと便利な方法のようです。
  • id:nannde
    Mookさま
    バグ発見&フォローありがとうございます!

    HALSPECIALさまの方法がベストのようですね
    方法1はコメントが無いと難しそう。
    方法2がどんぴしゃ!という感じです!

    お二方さまとも、終了後なのにご親切に教えていただきまして、
    本当にありがとうございます!!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません