動作検証バージョン:Windows 11 Home + 64bit Excel(バージョン2306 ビルド16529.20000)
「vba resize 左方向」
といった検索で時折アクセスがあります。
Excel VBAのRange.Resizeプロパティで、
左方向(マイナス方向)に拡張したセル範囲を取得するには、どのようなコードを書けばいいのかを調べていた方による検索です。
[スポンサードリンク]
マイナス方向にResizeしようとしたものの…
以下のようなSubプロシージャを試したものの、
Sub test()
Dim rng_org As Range
Set rng_org = ActiveCell
Dim rng_new As Range
Set rng_new = rng_org.Resize(1, -2)
rng_new.Select
End Sub
Range.Resizeプロパティには、正の整数しか指定できないため
「実行時エラー'1004': アプリケーション定義またはオブジェクト定義のエラーです。」
となってしまったのではないかと推測しています。
マイナス方向にResizeするサンプルマクロ
A列ではないセルがアクティブな状態で以下のマクロを実行してください。
Sub 左方向にResizeする()
Dim rng_org As Range
Set rng_org = ActiveCell
Debug.Print rng_org.Address(False, False)
Dim rng_new As Range
Set rng_new = rng_org.Offset(0, -1).Resize(1, 2)
Debug.Print rng_new.Address(False, False)
rng_new.Select
End Sub
Dim rng_org As Range
Set rng_org = ActiveCell
Debug.Print rng_org.Address(False, False)
Dim rng_new As Range
Set rng_new = rng_org.Offset(0, -1).Resize(1, 2)
Debug.Print rng_new.Address(False, False)
rng_new.Select
End Sub
たとえば、G7セルがアクティブな状態で実行すると、イミディエイトウィンドウに
G7
F7:G7
と出力され、F7:G7セルが選択されます。
Range.Resizeプロパティの引数には、正の整数・自然数しか指定できません。
マイナスの整数や0を指定すると、実行時エラーになります。
ですから、Range.Offsetプロパティで、基準とするマイナス方向(上記のサンプルでは1つ左のF7セル)のRangeを取得して、
Set rng_new = rng_org.Offset(0, -1).Resize(1, 2)
Range.Offsetであらたに取得したRangeを基準にしてResizeしています。
Set rng_new = rng_org.Offset(0, -1).Resize(1, 2)
最終更新日時:2023-06-09 11:42
[スポンサードリンク]
Home » Excel VBA Rangeオブジェクト » Offsetプロパティ » Excel VBAでマイナス方向にResizeするには