Rowsプロパティの働きと関連のメソッド

vbarowseyecatch

エクセル操作において、1つのセルではなくデータ行ごと選択し作業したい時があります。
VBA的には、Rowsプロパティからの関連メソッドなどでの処理となります。

こんにちは じゅんぱ店長 (@junpa33) です。

Excel VBAを学習しているときに、よく出てくるコードで「Rows」が必ずありますよね。

文字表記の感じからは、行の複数形なので ” 行たち、行の集まり ” というイメージですが・・・。

今回の話は、「 Rows」というプロパティについてです。

Rowsプロパティの範囲選択

Rowsの構文

  • Rows(行番号)

複数行を指定するときは (行番号) を (”行番号:行番号”) と記述します。複数行選択するときは「 “(ダブルクォーテーション)」を忘れずに付けます。

エクセルのVBAコードで、一番馴染みのあるものに「Range」というのがあると思います。

Rangeはセルを選択(参照)します。またさらに、複数のセルを参照したり、シート全体も参照することが出来ます。

「Rows」もRange同様にセルの行を選択(参照)することが出来ます。

性格的にはRangeと同類だと考えてもらってOKです。

Rowsの特徴は、

  • セルの横並びの行レベルでの範囲参照となります。
  • 複数の行を同時に選択し参照することが出来ます。
  • 複数の行でも離れた複数の行を選択参照することは出来ません。
  • Rangeプロパティと同様に下位の豊富なプロパティやメソッドを利用することが出来ます。

また、行の選択参照と言っても

指定行の最初のセルから最終のセル『XFD列の16,384列目』までの全部を選択してしまう訳ではなく、

エクセルシート上のセルの範囲を指定した中での ” ある行にあるセル全部 ” という使い方をすることが出来ます。

もちろん、XDF列まで全部ということも出来ます。

範囲選択の具体的サンプル

基本形

3行目を選択参照します。

コード
Sub Rows範囲指定1()
    Rows(3).Select
End Sub

vbarowsp001

3行目から5行目を選択参照します。

コード
Sub Rows範囲指定2()
    Rows("3:5").Select
End Sub

vbarowsp002

セル範囲内での行指定参照

セル範囲(B3からE9)での3行目を選択。指定の範囲が分かりやすいようにセルに着色をしています。

注意すること

  • 設定したセル範囲の中でRowsで行指定する場合は、Rowsで指定する行番号はセル範囲内での相対位置での番号となります。

絶対位置では、5行目が選択されています。

コード
Sub Rows範囲指定3()
        Range("B3:E9").Rows(3).Select
End Sub

vbarowsp003

絶対位置では5行目から7行目が選択されています。

コード
Sub Rows範囲指定4()
        Range("B3:E9").Rows("3:5").Select
End Sub

vbarowsp004

セル範囲内で離れた複数の行の指定参照

Rowsでは、離れた複数の行の同時指定参照は出来ません。

と、言っても、

離れた複数の行を指定したい時はあります。

vbarowsp005

こんなのはどうすればいいか?

「Rowsプロパティ+Unionメソッド」の合わせ技でOKです。

コード
Sub Rows範囲指定5()
    With Range("B3:E9")
            Union(.Rows(3), .Rows("5:7")).Select
    End With
End Sub
vbaunioneyecatchUnionとRangeの一括選択の働きを比較

Rowsでよく使う関連のメソッドとプロパティ

Rowsに続くメソッドとしての代表的なものとしては次のようなものがあります。

メソッド 内容
AutoFit セルの内容に合わせて行高さ列幅を自動調整をする。
Clear 指定範囲の行内のデータをクリアします。
Copy 指定範囲の行内のデータをコピーします。
Delete 指定範囲の行を削除します。
Insert 指定した行位置に新しく行を挿入します。
Select 指定範囲の行を選択します。

Rowsに続くプロパティとしての代表的なものとしては次のようなものがあります。

プロパティ 内容
Address セル範囲の参照範囲を取得します。
Count 範囲内のオブジェクトの数を数えます。
Height セル範囲の高さを示します。
Hidden 非表示を調べる。(Trueは非表示,Falseは表示)
NumberFormatLocal 表示形式を示す文字列を設定します。
Offset セル範囲から指定の移動量で範囲を移動させます。
Resize セルの範囲を指定量だけ変更させます。
Value セルの値を取得します。

頻度の高いメソッド

AutoFitメソッド

コード
Sub Rowsメソッド1()
    Rows(3).AutoFit
End Sub
vbarowsp006
vbarowsp007

Clearメソッド

コード
Sub Rowsメソッド2()
    Rows(3).Clear
End Sub

Copyメソッド

コード
Sub Rowsメソッド3()
    Rows(3).Copy Rows(5)
End Sub
vbarowsp008

Deleteメソッド

コード
Sub Rowsメソッド4()
    Rows(3).Delete
End Sub
vbarowsp010

Insertメソッド

コード
Sub Rowsメソッド5()
    Rows(3).Insert
End Sub
vbarowsp010

Selectメソッド

コード
Sub Rowsメソッド6()
    Rows(3).Select
End Sub
vbarowsp008

頻度の高いプロパティ

Addressプロパティ

コード
Sub Rowsプロパティ1()
    Dim a As String
        a = Rows("3:5").Address(False, False)
        MsgBox a
End Sub
vbarowsp008

Countプロパティ

コード
Sub Rowsプロパティ2()
    Dim b As Long
        b = Rows("3:5").Count
        MsgBox b
End Sub
vbarowsp008

Heightプロパティ

コード
Sub Rowsプロパティ3()
    Dim b As Long
        b = Rows("3:5").Height
        MsgBox b
End Sub
vbarowsp008

Hiddenプロパティ

コード
Sub Rowsプロパティ4()
        Rows(3).Hidden = True
End Sub
vbarowsp008

NumberFormatLocalプロパティ

コード
Sub Rowsプロパティ5()
        Rows(3).NumberFormatLocal = "yyyy/mm/dd"
End Sub

Offsetプロパティ

コード
Sub Rowsプロパティ6()
        Rows("3:5").Offset(3).Select
End Sub
vbarowsp010

Resizeプロパティ

コード
Sub Rowsプロパティ7()
        Rows(3).Resize(7).Select
End Sub
vbarowsp010

Valueプロパティ

コード
Sub Rowsプロパティ7()
        Rows(3).Value = 55
End Sub
vbarowsp010

Rowsプロパティのまとめ

エクセルVBAで行の操作をするときには欠かせないRowsプロパティです。

色々な操作の出来るプロパティを利用することが来ます。使い方も簡単ですのでどんどん使っていきましょう。

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできます。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

今回の記事はここまでです。   最後までご覧いただき有難うございました。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。