エクセルVBAについて質問です。


範囲を選択している際のマクロでは、Selection.Rowメソッドでは選択範囲の上の行の値を返しますが、
範囲の下の値を返すメソッドは何でしょう?

例えば3行目から7行目。

選択した範囲の行全体を削除したいです。

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

ベストアンサー

id:SALINGER No.1

回答回数3454ベストアンサー獲得回数969

ポイント35pt

選択範囲が1つの範囲ならば

Selection.Row + Selection.Rows.Count - 1

で下の行になります。複数の範囲だとまた違ってきます。


削除するには、

Sub test()
    Dim r1 As Long
    Dim r2 As Long
    r1 = Selection.Row
    r2 = r1 + Selection.Rows.Count - 1
    ActiveSheet.Rows(r1 & ":" & r2).Delete
End Sub
id:ReoReo7

どうもご丁寧にありがとうございます。

2008/11/08 00:02:00

その他の回答1件)

id:SALINGER No.1

回答回数3454ベストアンサー獲得回数969ここでベストアンサー

ポイント35pt

選択範囲が1つの範囲ならば

Selection.Row + Selection.Rows.Count - 1

で下の行になります。複数の範囲だとまた違ってきます。


削除するには、

Sub test()
    Dim r1 As Long
    Dim r2 As Long
    r1 = Selection.Row
    r2 = r1 + Selection.Rows.Count - 1
    ActiveSheet.Rows(r1 & ":" & r2).Delete
End Sub
id:ReoReo7

どうもご丁寧にありがとうございます。

2008/11/08 00:02:00
id:taknt No.2

回答回数13539ベストアンサー獲得回数1198

ポイント35pt

a = Selection.Address(False, False, xlA1)

a = Range(Right(a, Len(a) - InStr(a, ":"))).Row

これで 下の行が aに入ります。

id:ReoReo7

別のやり方もあるのですね。

2008/11/08 00:02:23
  • id:taknt
    最初は、私も Count で できるかと思いましたが、

    横3列とか選択した場合は、選択したセルの数を返されてしまうので、ダメと判断しました。

    addressだと 選択している範囲をそのまま取得できるのでそれを用いました。

    たとえば
    C2:D5
    など

    それで、右側のアドレスの行数の部分だけ取得するようにしました。

  • id:ReoReo7
    なるほど、列全体を選択した時に対して対応が可能なんですね!参考にします。

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

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

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

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