説明1-6 表の選択と行数のカウント
(1). CurrenRegion-1
操作
[表の選択1]ボタンと[色をもとに戻す1]ボタンを交互にクリックしましょう。Excelが表として認識した範囲が黄色で表示されたり、元の色に戻ったりします。
プロシージャ「説明用1611_表の選択1」の内容
[表の選択1]ボタンのプロシージャを表示しましょう。
- Sub 説明用1611_表の選択1()
- Range("b38").CurrentRegion.Select
- Selection.Interior.ColorIndex = 6
- End Sub
- 1行目:「Subプロシージャ」の開始
- 2行目:セル[B38]に関わる表を選択する
- 3行目:選択した範囲を「黄色」にする
- 4行目:「Subプロシージャ」の終了
プロシージャ「説明用1612_色を元に戻す1」の内容
[色を元に戻す1]ボタンのプロシージャを表示しましょう。
- Sub 説明用1612_色を元に戻す1()
- Range("b38").CurrentRegion.Select
- Selection.Interior.ColorIndex = 0
- 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が表として認識した範囲が黄色で表示されたり、元の色に戻ったりします。
プロシージャ「説明用1621_表の選択2」の内容
[表の選択2]ボタンのプロシージャを表示しましょう。
- Sub 説明用1621_表の選択2()
- Range("b47").CurrentRegion.Select
- Selection.Interior.ColorIndex = 6
- End Sub
- 1行目:「Subプロシージャ」の開始
- 2行目:セル[B47]に関わる表を選択する
- 3行目:選択した範囲を「黄色」にする
- 4行目:「Subプロシージャ」の終了
プロシージャ「説明用1622_色を元に戻す2」の内容
[色を元に戻す2]ボタンのプロシージャを表示しましょう。
- Sub 説明用1622_色を元に戻す2()
- Range("b47").CurrentRegion.Select
- Selection.Interior.ColorIndex = 0
- 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_表の行数のカウント」の内容
[行数のカウント]ボタンのプロシージャを表示しましょう。
- Sub 説明用163_表の行数のカウント()
- Dim gyouSuu As Long
- gyouSuu = Range("b47").CurrentRegion.Rows.Count
- MsgBox "上の表の行数は、" & gyouSuu & "行です"
- 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説明用]に戻りましょう。