VBA-23

説明1-6 表の選択と行数のカウント

(1). CurrenRegion-1

操作

[表の選択1]ボタンと[色をもとに戻す1]ボタンを交互にクリックしましょう。Excelが表として認識した範囲が黄色で表示されたり、元の色に戻ったりします。
[表の選択1]ボタン

 

[色を元に戻す1]ボタン

プロシージャ「説明用1611_表の選択1」の内容

[表の選択1]ボタンのプロシージャを表示しましょう。

  1. Sub 説明用1611_表の選択1()
  2.  Range("b38").CurrentRegion.Select
  3.  Selection.Interior.ColorIndex = 6
  4. End Sub
  • 1行目:「Subプロシージャ」の開始
  • 2行目:セル[B38]に関わる表を選択する
  • 3行目:選択した範囲を「黄色」にする
  • 4行目:「Subプロシージャ」の終了
プロシージャ「説明用1612_色を元に戻す1」の内容

[色を元に戻す1]ボタンのプロシージャを表示しましょう。

  1. Sub 説明用1612_色を元に戻す1()
  2.  Range("b38").CurrentRegion.Select
  3.  Selection.Interior.ColorIndex = 0
  4. End Sub
  • 1行目:「Subプロシージャ」の開始
  • 2行目:セル[B38]に関わる表を選択する
  • 3行目:選択した範囲を元に戻す
  • 4行目:「Subプロシージャ」の終了

上記の2行目は同じ記述です。

【CurrenRegion】
上下左右に連続する全てのセルを取得しますので、表全体を選択する時に使います。
見た目の表はセル[B38]からセル[G42]ですが、36・37行目にも文字列が入っていますので、Excelは黄色い範囲を表として認識します。

3行目の色の指定はいくつか方法がありますが、この株価チャート作成プログラムでは色の指定処理は行いませんので、簡単に説明します。

【文字色の指定方法】
 Range(範囲).Font.Color = RGB(red, green, blue)
 Range(範囲).Font.ColorIndex = 色のインデックス番号
【背景色の指定方法】
 Range(範囲).Interior.Color = RGB(red, green, blue)
 Range(範囲).Interior.ColorIndex = 色のインデックス番号
※.RGB
 RGB値(赤・緑・青)を指定
※.ColorIndex
 0:元に戻す、1:黒、2:白、3:赤、5:青、6:黄・・・・

 

(2). CurrenRegion-2

操作

[表の選択2]ボタンと[色をもとに戻す2]ボタンを交互にクリックしましょう。上記(1)と同様にExcelが表として認識した範囲が黄色で表示されたり、元の色に戻ったりします。
[表の選択1]ボタン

 

[色を元に戻す1]ボタン

プロシージャ「説明用1621_表の選択2」の内容

[表の選択2]ボタンのプロシージャを表示しましょう。

  1. Sub 説明用1621_表の選択2()
  2.  Range("b47").CurrentRegion.Select
  3.  Selection.Interior.ColorIndex = 6
  4. End Sub
  • 1行目:「Subプロシージャ」の開始
  • 2行目:セル[B47]に関わる表を選択する
  • 3行目:選択した範囲を「黄色」にする
  • 4行目:「Subプロシージャ」の終了
プロシージャ「説明用1622_色を元に戻す2」の内容

[色を元に戻す2]ボタンのプロシージャを表示しましょう。

  1. Sub 説明用1622_色を元に戻す2()
  2.  Range("b47").CurrentRegion.Select
  3.  Selection.Interior.ColorIndex = 0
  4. End Sub
  • 1行目:「Subプロシージャ」の開始
  • 2行目:セル[B47]に関わる表を選択する
  • 3行目:選択した範囲を元に戻す
  • 4行目:「Subプロシージャ」の終了

【ここでのポイント】
上記2つのプロシージャにおいて、選択したセル以外は(1)のプロシージャと同じ記述内容ですが、46行目に空白行があるため、見た目と同じ表が選択されています。つまり、[CurrenRegion]で表を扱う際には、見た目の表の外側を確認する必要があります。

 

(3). Rows.Count(表の行数のカウント)

 「行数」とはデータ件数とのことで、A社の株価データは30件、B社の株価データは40件です。VBAでは表のデータ件数分を処理する場合が多く、その場合には「行数のカウント」は必須になります。

操作

1).[行数のカウント]ボタンをクリックする
[行数のカウント]ボタン

 

2).ダイアログボックスに表の行数が表示され後に、[OK]ボタンで閉じる。
行数の表示

プロシージャ「説明用163_表の行数のカウント」の内容

[行数のカウント]ボタンのプロシージャを表示しましょう。

  1. Sub 説明用163_表の行数のカウント()
  2.  Dim gyouSuu As Long
  3.  gyouSuu = Range("b47").CurrentRegion.Rows.Count
  4.  MsgBox "上の表の行数は、" & gyouSuu & "行です"
  5. End Sub
  • 1行目:「Subプロシージャ」の開始
  • 2行目:行数を格納する変数[gyouSuu]を宣言
  • 3行目:セル[B47]に関わる表の行数を変数[gyouSuu]に格納
  • 4行目:ダイアログボックスに行数を表示
  • 5行目:「Subプロシージャ」の終了

2行目の[CurrentRegion]は上記(2)の表の選択方法と同じで、セル[B47]から始まる表を選択し、行(Rows)の数(Count)を変数(gyouSuu)に格納しています。

【MsgBox】
ダイアログボックスにメッセージとボタンを表示します。
この株価チャート作成プログラムでのMsgBoxは[OK]ボタンの表示しか使いませんが、[はい]・[いいえ]・[キャンセル]等用途に応じたボタンの表示が可能です。
4行目の「MsgBox "上の表の行数は、" & gyouSuu & "行です"」の[&](アンパサンド)は文字列を結合する演算子で、MsgBox以外でも使われます。

 

次にシート[実習用VBA]で実習を行いましょう。
確認が終わりましたら、VBE画面の左上[Excel]アイコンをクリックしてシート[VBA説明用]に戻りましょう。

 

 
  このエントリーをはてなブックマークに追加

 

スポンサーリンク