• ベストアンサー

EXCEL-VBAでRangeの末端の座標値を取得できますか?

Activecell.row / column でセルの座標値が取得できますが、範囲(例えば a1:c5 )を選択している時の、rangeの末端の座標 (この場合では c5 = ????.row=5,????.column=3) を取得する方法をご存知の方、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

> マニュアルとか、サイトはありますか? 参考書は、ちょっと大きな本屋さんに行けば、一杯あるかと・・・ 内容を見て適当なものに決めればいいと思います。 サイトも、これまた一杯ありまして、何処が一番とかは、言えませんが、取り敢えず・・・ http://www.voicechatjapan.com/excelvba/ なんかは、どうですか。 あと、Cellsで思い出しましたが、これを使えば、ちょっと簡単になります。 どっちも、連続している1つの範囲の場合です。 飛び飛びの場合は、方法が違います。 Sub Test2() Dim Rng As Range With Selection   Set Rng = .Cells(.Rows.Count, .Columns.Count) End With MsgBox "Address = " & Rng.Address(False, False) & vbNewLine & _            "Row = " & Rng.Row & vbNewLine & _            "Column = " & Rng.Column, , "最終アドレス" End Sub

oyaji-2
質問者

お礼

ありがとうございます。勉強し甲斐が有りそうですが、兆戦してみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • at121
  • ベストアンサー率41% (85/206)
回答No.2

範囲レンジの右下末端セル Set 右下末端セル = レンジ.Cells(レンジ.Count) With レンジ  Set 右下末端セル = .Cells(.Count) End With 右下末端セル が 結合されたセルだと 結合の左上でないと入力できない・・

oyaji-2
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.1

範囲内のアクティブセルの位置が任意の場合として、こんな感じかな。 Sub Test1() Dim Rng As Range With Selection   Set Rng = .Resize(1, 1).Offset(.Rows.Count - 1, .Columns.Count - 1) End With MsgBox "Address = " & Rng.Address(False, False) & vbNewLine & _          "Row = " & Rng.Row & vbNewLine & _          "Column = " & Rng.Column, , "最終アドレス" End Sub

oyaji-2
質問者

お礼

ドットや---s の打ち間違えで何度かエラーになりましたが結局出来ました、感激です、ありがとうございます。 ところでこの手の内容が書かれたマニュアルとか、サイトはありますか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • rangeに変数代入でエラー

    VBA初心者です。お願いします。 下記のように最終セルのアドレスを取得し、セル範囲を選択したいのですがたのですが、エラーが出てしまいます。どなたか助けてください。 ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate l = ActiveCell.Column 'アクティブセルの列番号 d = ActiveCell.Row 'アクティブセルの行番号 ad = ActiveCell.Address 'アクティブセルのアドレス Range("A1:ad").Select

  • 選択したセルの座標の取得

    選択したセルの座標の取得 sheet1    A B C   1   2  α     3     sheet1のB2にはαという文字が挿入されており、ハイパーリンクの設定がしてあります。 B2をクリックするとsheet2に移行します。 sheet1で選択したセルの位置を取得したいのですが、上手くいきません。 ご教授の程、宜しくお願いします。  現在の記述は以下の通りです。  Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)  Dim gyo As Long  Dim ret As Long  gyo = ActiveCell.Row  ret = ActiveCell.Column  MsgBox "行番号" & gyo & "列番号" & ret  End Sub Sheet1のB2を選択して、Sheet2に移行した時に、Msgboxには、 行番号2 列番号2 というようにしたいのです。

  • エクセル:VBAで範囲選択について

    クリックしたセルを操作者に目立たせるために、 ActiveCell を交差する形で、行と列の反転表示を試みています。 例:D6セルをクリックすると、D列と6行を同時に範囲選択させる   Range("D:D,6:6").Select クリックしたセル番地は、 ActiveCell.Column ActiveCell.Row で求まると思うのですが、それから先の処理方法が思い浮かびません。 よろしくお願い致します。

  • VBAで、セル(Range)のオブジェクトが取得できない

    セルの情報を取得したいのですが、何故か以下のように書くと上手い具合に取得できません(A、B、Cは数値の変数)。 ------ Dim Rng As Range 'セル範囲を格納 Set Rng = Worksheets(1).Range(Cells(A, B), Cells(A, C)) ------ 以下のようにしてやると、何とか取得できます。 Worksheets(lngASNo + 1).Select Set Rng = Range(Cells(A, B), Cells(A, C)) どこが悪いのでしょうか? もし、判る方がいらっしゃいましたら、よろしくお願いいたします。

  • VBA チェンジイベント 別シートにデータ転記

    お世話になります。チェンジイベント初心者です。 同一BOOK内の特定のコラムのセルを選択した場合に、自動的に他のシートの特定のセルにデータを転記させたいのですが、どう書けばよいのか分かりません。添付の画像と下記マクロをご覧になって下さい。 -マクロ- Private Sub Worksheet_SelectionChange(ByVal Target As Range) If 1 = ActiveCell.Column Then Worksheets("01").Cells(ActiveCell.Row, 3) = Cells(ActiveCell.Row, 1) Worksheets("01").Cells(ActiveCell.Row, 4) = Cells(ActiveCell.Row, 2) End If End Sub メインのシートは[01]です。このシートのC4を選択し、次に[02]のA列にあるセルを選択すると、[02]のA列・B列のデータがC4・D5に転記されるようにしたいのですが、画像にあります通り[02]のA5を選択してしまうと、[01]のC5・D5に転記されてしまいます。 どのようにすれば、[01]でアクティブにしておいた行の3列目、4列目に転記が行われるのでしょうか? よろしくご指南くださいませ。

  • VBA Target.ColumnをRangeへ

    Excel VBAについてお尋ねいたします。 Excel VBAにて現在選択しているセルの列番号をTarget.Columnで取得することが出来ますが、Target.Columnで取得した列番号(数字)をRange方式のアルファベットに変換する方法はございますでしょうか? Range形式のアルファベットに変換してから、セルに=○○という数式を出力させたいです。 選択する列は、N列~右端までの間です。 取得した列番号を26で割って26で割って26で割って…を繰り返して、商と余でアルファベットを形成するという方法を考えましたが、その場合でもどうやって記述すればいいですか?

  • VBA 選択された離れたセルの値の取得について

    EXCELのVBAでどうしても前に進めず困っております。 目的としているコードは、離れたセル(複数)をあらかじめCtrlキーで選択状態にしておき、選択されたセルの値のみをVBAが別のセルに並べていくというものです。 以下が私の作ったコードなのですが、思ったとおりの動作をしてくれません。 VBA初心者なもので、おかしな記述がたくさんあると思うのですが、どなたかアドバイスお願いします。 Public Sub xx() Dim SelectArea As String Dim TargetCell As Range Dim a As Integer Dim Row As Integer Dim Column As Integer Dim CNT1 As Integer a = 0 Row = 0 Column = 0 For CNT1 = 1 To 10 Row = Row + 1 SelectArea = Selection.Address Set TargetCell = Range("B3").Cells(Row - 1, Column) If Intersect(Range(SelectArea), TargetCell) Is Nothing Then Else Range("A30").Cells(a, 0) = Range("B3").Cells(Row - 1, Column).Value a = a + 1 End If Next End Sub

  • Excel2013VBA列選択の拡大

    ExcelVBA2013です。 列の取得でつまづいております。 お手数ですが、ご教授下さい。 下記のコードで選択範囲のコピー貼り付けは出来ていますが、列幅がコピーされていませんでした。 CC3のセルを基準にOffsetとResizeで範囲拡大してコピーしているためだと思います。 CC3の左隣のAX3:CB3はセル結合されています(○月)。(その下の4行目は日付の1~31が入力) 列は、今回はAX3:CC3まで(1月分)取得できればよいです。(可変します) MaxCol = Range("J5").End(xlToRight).Column  で列取得できます。 行の位置は、MaxRow = Range("I5").End(xlDown).Row  で取得した値です。 それで、列全体を取得しようと、 MaxCol = Columns(MaxCol).Select で最終列は取得できましたが、そこから列選択の拡大ができればと思っています。 現在は、AX3:CC237まで取得コピーして、隣の列に貼り付けで列幅が違う。 希望はAX:CCまでの列を取得選択コピーして貼り付け。 Sub SAMPLE() Dim MaxRow As Variant, MaxCol As Variant Dim r As Range, c As Range MaxRow = Range("I5").End(xlDown).Row '最終行番号 MaxCol = Range("J5").End(xlToRight).Column '最終列番号 Set c = Cells(3, Cells(3, Columns.Count).End(xlToLeft).Column) '表の右上角のセル番地を取得 c.Select c.Offset(0, -31).Resize(MaxRow - 2, 32).Copy c.Offset(0, 1) '表右上から1月分選択範囲拡大してコピー隣の列より貼りつけ End Sub

  • EXCEL・VBAについておしえてください

    Excel VBAで以下のようなことをしたいです。 C列に作業日が入っています。 date(today)を条件に C列で該当するセルが あればフォントの色を変えて強調させようと考えています。 それ以外は黒字フォントのままで固定です。 単独のセルだけを対象にするとうまくいので おそらく、行全体の値を取得しなければならないと 思うのですが forをつかってuboundを使っても うまくいきません。どなたかご意見をください 以下 うまくいかないコードですが のせています。  *********************** range("A1") = date set 選択範囲 = columns(C) if 選択範囲 = range("A1") then end if

  • ExcelVBAで「Cells」を使ってセルの選択範囲を指定する方法

    例えば、セル「A1」から「C5」とセル「F1」から「I4」の範囲を選択する場合、 Range("A1:C5,F1:I4").Select としますがこれを「Cells(Row,Column)」を使うやり方はどのようにすればよいのでしょうか? Range(Cells(1, 1), Cells(5, 3)).Select Range(Cells(1, 6), Cells(4, 9)).Select 上記のような二つに分けてプログラムを動かすのではなく、あくまでセル「A1」から「C5」とセル「F1」から「I4」の範囲を同時に指定する方法です。 回答よろしくお願いします。

専門家に質問してみよう