Excel VBA業務効率化

あなたのExcel定型業務をVBAで効率化、省力化をお手伝いします。

詳細はこちら

エクセルVBA練習帳、データベース範囲に一行置きに色を付ける。ColorIndexとRGBを使って表を見やすくする

エクセルVBA
この記事は約6分で読めます。

データベース領域に一行置きに横縞の色を付ける

システム概要

ダウンロードしたファイルを開くとSheet1に上図の③④で示しすデータベース領域がセットしています。

上図のはそれぞれイメージコントロールを配置しインターネットから無料で使用できるイメージ画像をコピーして貼り付けてあります。

は、クリックしたときのイベントプロシージャにデータベース領域がどこにあるか調べて、そのデータ領域が見やすくなるよう一行置きに色を付けるためのコードを書き込んでいます。
具体的には、クリックすると下図のような縞模様の色を指定するフォームが開きます
フォームの中から、付けたい色をオプションボタンをクリックすると、データ範囲に一行置きに色を付けます。

VBAでは色を付けるコードはColorIndexで番号を指定する方法とColorにRGB関数で指定する方法があります。ここでは表を見やすくする色としては個人的な趣味趣向でこのような色が適当にセットしています。

.Interior.ColorIndex = にユーザーが見やすいと思う色番号に変更してください。
ここでは薄い藤色で、24を指定しています

色指定で最後の「薄い灰色」だけはVBA色パレットのColorIndexには指定番号がついてないので

.Interior.Color = RGB(240,  240,  240)を使用しています

は、クリックしたときのイベントプロシージャに、で付けた色を消して初期状態にするコードを書き込んでいます

■RGB関数の構文
RGB
(_赤、__緑、_)
RGB 関数の構文には、次の 名前付き引数があります。

パーツ 説明
red 必須です。Variant (Integer)。 色の赤い成分を表す 0255– の範囲の数値です。
green 必須です。Variant (Integer)。 色の緑の成分を表す 0255– の範囲の数値です。
blue 必須です。Variant (Integer)。 色の青い成分を表す 0255– の範囲の数値です。

注釈
色指定を受け取るアプリケーションのメソッドプロパティは、その指定を RGB カラー値を表す数値として受け取ります。 RGB カラー値は、赤、緑、青の相対的な明度を指定して特定の色を表示します。
RGB の 引数の値が 255 を超えると、その値は 255 と見なされます。次の表は、標準色と、それに含まれる赤、緑、青の値を示します。

※ https://learn.microsoft.com/ja-jp/office/vba/api/overview/ を参照

システムの基本動作

前準備

● 動作を開始するボタンの代わりにイメージオブジェクトを2個用意しそれぞれ、イメージ1は動作を開始するボタン、イメージ2は動作をやり直すボタンとしています。

●シートの適当な位置のセルを起点とした5列15行程度の表に適当なデータを書き込んで置きます。

※データ領域は空白行や空白列を含まないように、又一番最初の行は項目行になるようにセットします。

データの領域に一行置きに色を付けるサブプロシージャ(simasima)

※このシステムでメインとなる動作でイメージ1のクリックイベントプロシージャの中から呼び出しします。

Sub simasimaの引数説明

第一引数 GMaxには、データベース領域の最大データ行数をもらいます

第二引数 RMaxには、データベース領域の最大列数をもらいます

第三引数 dataは0と1の二つのデータを持つ配列でdata(0)にはデータベース先頭セルの番号data(1)にはデータベース先頭セルの番号をもらいます。

第四引数 iroには、指定する色のColorIndex番号をもらいます。

Sub simasima(GMax As Integer, RMax As Integer, data As Variant, iro As Variant)
‘データベース範囲に縞模様を付ける
Dim r As Integer
Dim gyou As Integer
Dim retu As Integer
Dim p As Integer

gyou = data(0)
retu = data(1)
‘データベースの色を消しておく
ActiveSheet.Cells(gyou, retu).CurrentRegion.Offset(1).Interior.ColorIndex = 0
‘一行置きに色を付けるメインコード

For r = 2 To GMax Step 2
  If iro = 240 Then
    ’RGB()関数使用の時
            下記のコードはセル範囲に色を付ける具体例を下図で読み解いてください。
    ActiveSheet.Range(Cells(gyou + r, retu), Cells(gyou + r, retu + RMax – 1)) _
                          .Interior.Color = RGB(iro, iro, iro)
 
  Else
    ’ColorIndex番号の時
    ActiveSheet.Range(Cells(gyou + r, retu), Cells(gyou + r, retu + RMax – 1)) _
      .Interior.ColorIndex = iro
  End If
Next r

End Sub

RGB関数でセル範囲に色を付ける具体例

全てのコード

色を指定するフォーム

フォームのコード説明

フォームに色を指定するためのオプションボタンを6個配置。

各オプションボタンをクリックしたときの状態を記録しておくラベル(ID = ”selectionColor”)を1個用意しVisibleプロパティにFalseを指定して表示しないようにしておきます

各オプションボタンをクリックしたとき、オプションボタンのキャプションに指定した色番号をraberラベルselectionColorに記録してフォームを閉じます(unload閉じるとselectionColorのデータを参照できなくなるのでHideで閉じます。)

あとで、simasimaサブプロシージャを呼び出すときに、selectionColorに記録したデータを参照して色付けする仕組みです。

後にこのselectionColorに記録する部分をシートのセル、Range(“C10”)に記録して視覚的に確認できるよう変更しました

 

ダウンロード

ファイルのダウンロードは下記から

コメント

タイトルとURLをコピーしました