Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » Resizeプロパティで行全体を?

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「excel vba resize 行全体 を選択」
「マクロ resize 行全体」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。

RangeオブジェクトのResizeプロパティを使って、

Resizeプロパティで行全体を?

行全体を取得・選択するには、どのようなコードを書けばしいのかを探していらした方による検索です。

[スポンサードリンク]

Range.Reizeで行全体を選択するサンプルマクロ

一応、以下のようなSubプロシージャで、1行目全体を、選択することは、でき、ます。


Sub Range_Risizeで行全体を選択する()
 Range("A1").Resize(1, Columns.Cont).Select
End Sub

Range.Resizeプロパティの第1引数には行数・第2引数には列数を指定するので、列数を取得するColumns.Countプロパティを第2引数に指定しています。

上記のプロシージャは基準を「Range("A1")」としているので、「Range("A1").Resize(1, Columns.Cont)」で済んでいますが、基準が「Range("B2")」など1列目でなないセルの場合には、もっと複雑な式になってしまいます。

Range.EntireRowで行全体を選択するサンプルマクロ

行全体を取得するなら、Range.Resizeプロパティよりも、Range.EntireRowプロパティをおすすめします。


Sub Range_EntireRowで行全体を選択する()
 Range("A1").EntireRow.Select
End Sub

Range.EitreRowプロパティを使えば、

Resizeプロパティで行全体を?

基準にしたRangeから簡単に行全体を表すRangeオブジェクトを取得できますから、
 Range("B2").EntireRow.Select
で、2行目全体を選択できます。

Range.ResizeとRange.EntireRowで取得するRangeオブジェクトはまったく別モノ

上記のプロシージャで使っている、
  Range("A1").Resize(1, Columns.Cont).Select
  Range("A1").EntireRow.Select
の2つは、ヒトにはどちらも同じように1行目全体が選択されているように見えますが、ここで使われているオブジェクト式、
  Range("A1").Resize(1, Columns.Cont)
  Range("A1").EntireRow
で取得しているRangeオブジェクトはまったく別モノです。


Sub Range_ResizeとRange_ EntireRowの違いを確認する ()
 MsgBox  Range("A1").Resize(1, Columns.Cont).Count
 MsgBox Range("A1").EntireRow.Count
End Sub

上記のプロシージャを実行すると、「16384」と「1」が表示されるはずです。

見た目には、
  Range("A1").Resize(1, Columns.Cont).Select
  Range("A1").EntireRow.Select
の2つは同じに見えますが、
  Range("A1").Resize(1, Columns.Cont)
のほうは、個々のセルを単一オブジェクトとして持つRangeコレクションオブジェクトを返してくるのに対し、
  Range("A1").EntireRow
は、行全体を1個のRangeオブジェクトとて返してくるからです。

その他取得した行全体を非表示にしようとしたときにも違いは見えます。
  Range("A1").EntireRow.Hidden = True
は問題なく1行目を非表示にできますが、
  Range("A1").Resize(1, Columns.Count).Hidden = True
実行時エラーが発生してしまいます。

行全体を表すRangeオブジェクトを取得するなら、Range.Resizeより、Range.EntireRowをおすすめします。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » Resizeプロパティで行全体を?

TrackBack:0

TrackBack URL

Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » Resizeプロパティで行全体を?

「行・列を表すRange」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.