GEN MUTO'S HOMEPAGE  エクセル大事典  エクセルVBAを極める

エクセルExcel大事典 エクセル大事典TOPページへ
 ■ エクセルVBA中級編−ワークシートを使いこなそう
  行・列に対する操作をマスターしよう!
 
■ 行・列に対する操作をマスターしよう!

数回にわたってワークシート上のセルを操作するExcel VBAについて解説を行います。
今回はシートの行・列を操作する様々な方法について解説していきます。

行・列に対する操作

操作の対象となるセルの行番号や列番号を取得したり、行や列を削除したり挿入したいケースがExcelでは、頻繁に発生します。ここでは、行・列に対する操作をまとめて解説します。

■Rowsプロパティ、Columnsプロパティ
ワークシートの指定した、行や列を取得することができます。「1〜3」行目というように連続した行、または「5」行目というように単一の行を取得することができます。列に関しても同様です。

[書式]
オブジェクト.Rows(行番号)
オブジェクト.Columns(列番号)

オブジェクトには、Applicationオブジェクト、Worksheetオブジェクト、Rangeオブジェクトを指定します。省略すると、アクティブシートが対象になります。

行番号には操作の対象となる行番号を、列番号には操作の対象となる列番号、または列を表すアルファベットを、それぞれ指定します。省略すると、すべての行、またはすべての列を対象にします。

例:
Sub Test()
  Rows(1).Value = "R_1"
  Rows("3:5").Value = "R_2"
  Columns(2).Value = "C_1"
  Columns("E:G").Value = "C_2"
End Sub
 
このプロシージャを実行すると、アクティブシートの1行目に「R_1」の文字列を、3〜5行目に「R_2」の文字列を、B列に「C_1」の文字列を、E〜G列に「C_2」の文字列を、それぞれ設定します。

※ 参照する行または列が連続していないケースでは、Rangeオブジェクトを使用します。例えば「Range("3:3,5:5")」ならば3行目と5行目を、「Range("E:E,G:G")」ならばE列とG列を、それぞれ参照します。

■Rowプロパティ、Columnプロパティ、Countプロパティ
Rowプロパティ、Columnプロパティは参照先セルの行番号、列番号を返します。Countプロパティはセル領域の行数や列数を取得します。

例:
Sub Test()
  Debug.Print Range("A65536").End(xlUp).Row
  Debug.Print Range("A1").CurrentRegion.Rows.Count
  Debug.Print Range("IV1").End(xlToLeft).Column
  Debug.Print Range("A1").CurrentRegion.Columns.Count
End Sub

このプロシージャを実行すると、アクティブシートの「A1〜C10」のセル範囲にデータがある場合、「10」「10」「3」「3」が出力されます。

■EntireRowプロパティ、EntireColumnプロパティ
EntireRowプロパティは指定したセルやセル範囲を含む行を、EntireColumnプロパティは指定したセルやセル範囲を含む列を、それぞれ参照します。

Sub Test()
  Range("合計").EntireRow.Insert
  Range("合計").Offset(0, 1).EntireColumn.Delete
End Sub

このプロシージャを実行すると、アクティブシートの「合計」という名前の付いたセルの前に1行挿入し、右隣の列を1列削除します。例えば「合計」のセルが「A10」の場所にある場合、10行目に1行挿入され、「合計」のセルは「A11」の場所になります。さらにB列が1列削除され、C列以降のデータが左に1列移動します。

■Hiddenプロパティ
行や列の表示、非表示を切り替えます。

[書式]
オブジェクト.Hidden
オブジェクト.Hidden = 値


オブジェクトには、表示・非表示を切り替えたい行または列を指定します。

には、TrueまたはFalseを指定します。Trueを指定すると非表示に、Falseを指定すると表示に切り替わります。

例:
Sub Test()
  Rows(3).Hidden = True
  If Columns("E:G").Hidden Then
    Columns("E:G").Hidden = False
  End If
End Sub

このプロシージャを実行すると、アクティブシートの3行目を非表示にします。さらにE〜G列が非表示になっている場合、再表示します。

■RowHeightプロパティ、ColumnWidthプロパティ、
 Heightプロパティ、Widthプロパティ、AutoFitプロパティ

RowHeightプロパティ、ColumnWidthプロパティは、セル範囲の行の高さや列の幅を取得・設定することができます。
Heightプロパティ、Widthプロパティは、セル範囲の行の高さや列の幅の合計を取得することができます。
AutoFitプロパティは、行の高さや列の幅を自動調節します。

[書式]
オブジェクト.RowHeight
オブジェクト.RowHeight = 値

オブジェクト.ColumnWidth
オブジェクト.ColumnWidth = 値

オブジェクト.Height
オブジェクト.Width
オブジェクト.AutoFit

オブジェクトには、操作の対象となる行または列を指定します。

RowHeightに設定する値は、行の高さをポイント単位で指定します。ColumnWidthに設定する値は、標準フォントの半角文字の幅を1とする単位で指定します。
Height
プロパティ、Widthプロパティから取得できる値は、どちらもポイント単位になります。なおHeightプロパティ、Widthプロパティは値の設定ができません。

(注意)RowHeightプロパティ、ColumnWidthプロパティでセル範囲を指定した場合、すべての行が同じ高さ、またはすべての列が同じ幅でない場合、戻り値は「Null」になるので注意が必要です。

例:
Sub Test1()
  Debug.Print Rows(1).RowHeight
  Rows("3:5").RowHeight = Rows(1).RowHeight + 6
End Sub

Sub Test2()
  Debug.Print Rows("3:5").Height
  Rows("3:5").AutoFit
  Debug.Print Rows("3:5").Height
End Sub

「Test1」プロシージャを実行すると、RowHeightプロパティを使用してアクティブシートの1行目の高さをポイント単位でイミディエイトウィンドウに出力します。ここでは仮に「21」が出力されたものとします。次に3〜5行めの高さを、同じくRowHeightプロパティを使用して1行目の高さに「6」を加算した値「27」に設定します。

「Test2」プロシージャを実行すると、Heightプロパティを使用して3〜5行めの高さの合計値である「81」をイミディエイトウィンドウに出力します。次に、AutoFitプロパティで3〜5行めの高さを自動調節します。次にHeightプロパティで取得する3〜5行めの高さの合計値は、自動調節後の値になります。


以上、行・列を操作するいろいろな方法について解説しました。
VBAからシートの行・列を自由に操作することで、様々な変化に対応するワークシートを活用することができます。今回の解説を役立ててください。

>> 次の話にすすむ


サイト内検索ができます

Microsoft Most Valuable Professional

Microsoft MVP Excel
武藤 玄 プロフィール
 

■■■ 執筆した書籍 ■■■
 

EXCEL VBA 業務自動化
 

Excel VBA を5日でマスターする本
 

仕事を速くする Excel VBA 入門
 

Excel VBAと業務改善のポイントがわかる本
 

Access VBA ベーシック スタンダード
 

Excel VBA アクションゲーム作成入門
 

■■■ 連載中の記事 ■■■
 

Excel VBAで業務改善!
 

実務で使うExcel VBA
 


TOPページ


■ エクセルVBA超入門

 ・9ステップで"Hello World!"
  からオブジェクト指向まで!
  1."Hello World!"を表示しよう
  2.基本はデータの入出力
  3.繰り返し処理
  4.シートで簡易データベース
  5.名前をつけよう
  6.構造化プログラムに挑戦
  7.構造体を使ってみよう
  8.フォームを使ってみよう
  9.オブジェクト指向に挑戦

■ エクセルVBA中級編

 ・VBAでいろんなテクニック
  変数・関数のスコープ
  引数の参照方法を明示
  配列の中身を一気に複写
  識別子がよいコードを作る
  データ定義型をもっと知ろう
  定数と列挙型を活用しよう
  エラー処理の重要性1
  エラー処理の重要性2
  いろいろな条件分岐
  いろいろな繰り返し処理
  演算子について知ろう
  文字列操作 連結 変換 置換
  文字列操作 検索 比較 書式
  日付操作関数を知ろう
  数値操作・評価・その他関数
  並び替えソートをマスター
  いろいろな検索をマスター
  VBEditorを使いこなそう
  マクロの記録を活用しよう1
  マクロの記録を活用しよう2
  VBAからVBEを操作しよう1
  VBAからVBEを操作しよう2
  VBAからVBEを操作しよう3
 ・ワークシートを使いこなす
  セルの参照をマスターしよう
  セルの選択をマスターしよう
  セルの操作をマスターしよう
  セルの書式設定をマスターしよう
  行・列の操作をマスターしよう
  シートの参照をマスターしよう
  シートの操作をマスターしよう
  ブックの操作をマスターしよう
  ウィンドウの操作をマスターしよう
  イベントプロシージャを活用しよう
  ワークシートを印刷しよう1
  ワークシートを印刷しよう2
  音声(読み上げ)機能を操作しよう
  グラフを操作しよう
 ・ユーザーフォームを使いこなす
  ユーザーフォームを使おう
  UserFormsオブジェクト
  Labelコントロール
  TextBoxコントロール
  ComboBoxコントロール
  ListBoxコントロール
  CheckBoxコントロール
  OptionButtonコントロール
  ToggleButtonコントロール
  CommandButtonコントロール
  ScrollBarコントロール
  SpinButtonコントロール
 ・VBA関数の一覧
  Aから始まる関数の一覧
  Cから始まる関数の一覧
  Dから始まる関数の一覧
  Eから始まる関数の一覧
  Fから始まる関数の一覧
  Gから始まる関数の一覧
 
■ エクセルVBAを極める
 VBAスーパーテクニック
 
 ・データベースへ接続してみよう!
  CSVファイルへの接続
  ワークシートへの接続
  mdbファイルへの接続
  SQL Serverへの接続
  ADOレコードセットの操作1
  ADOレコードセットの操作2
 ・ファイルを操作してみよう!
  FileSystemObjectの操作
  Drive File Folderの操作
  TextStream ダイアログ
  ステートメントでファイル操作1
  ステートメントでファイル操作2
 ・他アプリと連携してみよう!
  ActiveXオートメーションの操作
 ・ゲーム技でマクロを超える
  エクセルで音を鳴らす1
  エクセルで音を鳴らす2  
  スクリーン座標を取得
  様々なイベント取得
  リボンUIを制御しよう1
  リボンUIを制御しよう2
  シート上でアニメを動かそう
 
■ 一歩上行くエクセル
 基本操作の完全マスター!

 
 ・あなたはいったい
  エクセルで何をしたいのか?
  エクセルで業務効率化
  エクセル関数を使いこなす
  エクセルの便利技
  エクセルは最高の帳票ツール
 ・エクセル基本操作上級編!
  セル選択、コメント、シリアル値
  オート機能を使いこなそう!
  参照、条件付書式、入力規則
  関数をもっと理解しよう!
  配列数式を有効利用しよう!
  データの正規化をしよう!
  ショートカットキーを利用しよう1
  ショートカットキーを利用しよう2
  Office用アプリを作成しよう!
  PowerPivotとExcelで簡単BI!
 ・世間の誤ったエクセルの
  べからず集
  エクセルで文章を書くべからず
  エクセルで図形を描くべからず
  エクセルでシステムをつくるな
 
■ エクセル関連その他

 ・エクセルコミニュティにあなたも
  参加しませんか?
  Excel関連リンク・コミニュティ
 ・VBの理解がVBAをマスターする
  最短距離!
  VB関連の老舗・大家サイト
 ・エクセルExcel大事典掲示板
 ・プライバシーポリシー

2000アイテムを超えるラベルを販売
送料無料、即納対応の優良ショップ
今買っているラベルより確実に安い!
OAラベルの販売専科グラフトラベル




エクセルExcel大事典ははリンクフリーです エクセル大事典Excel大事典
お問い合わせはこちら gengengen@yahoo.co.jp

Copyright© Gen Muto 武藤 玄 All Rights Reserved,