日本語VBAでセルの 背景色の光の三原色の 成分を求めてみよう

Pocket

日本語VBAでセルの 背景色の光の三原色の 成分を求めてみよう
日本語VBAでセルの背景色の光の三原色の成分を求めてみよう

序文

はい。

青色発光ダイオードの発明でLED電球が世に送り出され、その省エネ性と、鮮やかな発色に、世の中の人が大歓迎しましたね。

LED電球は、白色に光っています。

しかし、最近はLED電球の青色成分が良くないということで、「ブルーライトカット」された電球やモニタが普及していますね。

これは白色光の中の青色を幾分カットし、目にダメージを与えないためでした。

しかし、白色光の成分は、赤色、緑色、青色の3つに分けられることをご存じでしたか?

パソコンのモニタの光の成分も同じです。

これを「光の三原色」といいます。

今回は、セルの背景色から「光の三原色」の成分を取り出す、という日本語VBAを組んでみます。

といっても、難しいものではありません。

日本語関数に、「F_色の三原色を取得()」関数が存在しますので、その関数を呼び出せば済むことです。

なお、今回のページの日本語VBAを実行するには、「エクセルVBA日本語化 ver0.17.0-alpha-1」以上のバージョンが必要です。

以下のURLよりダウンロードされてください。

それでは、いってみましょう!

完成形の実行結果

このページのプログラムの完成形の実行結果
このページのプログラムの完成形の実行結果

今回の日本語VBAのプログラムの完成形は上図の通りです。

A列の各セルの背景色に色々な色を設定しています。

そして、B列に赤色成分の値、C列に緑色成分の値、D列に青色成分の値を取得しています。

各成分の値は、VBAの仕様上、0~255までとなっています。

メイン処理を作る

まずは、サブルーチンの形を作る。
まずは、サブルーチンの形を作る。

まずは、メイン処理となるサブルーチンを作りましょう。

下記コードをコピペしてください。

Public Sub 選択範囲のセルの背景色の三原色を取得()

End Sub
「g_道具」を選択
「g_道具」を選択

次に、まずは「g_道具」を取り出しましょう。

g_」まで入力し、CTRL+スペースキーを押下します。

「セル」を選択
「セル」を選択

すると、「g_道具」と補完されます。

その後、「.(ピリオド)」を入力すると、自動的に補完候補が表れます。

選択肢の中から、「セル」を選択し、 TABキーを押下して選択を確定します。

「選択範囲」を選択
「選択範囲」を選択

さらに、「セル」の後に、「.(ピリオド)」を入力します。

すると、補完候補が表れますので、「選択範囲」を選択し、TABキーを押下して、選択を確定します。

「セル」の「セルごとにサブルーチン呼び出し」を選択
「セル」の「セルごとにサブルーチン呼び出し」を選択

さらに「.(ピリオド)」を入力すると、補完候補が表れます。

選択肢の中から、「セルごとにサブルーチン呼び出し」メソッドを選択し、TABキーを押下し選択を確定します。

「セルごとにサブルーチンを呼び出し」メソッドの呼び出し先のブロック名を設定
「セルごとにサブルーチンを呼び出し」メソッドの呼び出し先のブロック名を設定

最後に、セルごとに呼び出すサブルーチン(ブロックと称しています)として、「“b_色の三原色を横に3列のセルに保存”」を指定します。

以上までの手順で、選択範囲内のセルごとに、ブロック「”b_色の三原色を横に3列のセルに保存”」が呼び出されます。

後は、ブロック「”b_色の三原色を横に3列のセルに保存”」の中で、セルごとに背景色の光の三原色(赤、緑、青)の値を、「F_色の三原色を取得()」関数で取得し、各値をエクセルシートのB列以降のセルにセットしていきます。

メイン処理は以上です。

メイン処理のコードは以下のようになります。

コピペされてください。

Public Sub 選択範囲のセルの背景色の三原色を取得()
    g_道具.セル.選択範囲.セルごとにサブルーチン呼び出し "b_色の三原色を横に3列のセルに保存"
End Sub

セルの背景色の三原色を取得するブロックを作る

まずは、ブロックであるサブルーチンの形を作成する
まずは、ブロックであるサブルーチンの形を作成する

まずは、ブロック「“b_色の三原色を横に3列のセルに保存”」の大枠を作ります。

サブルーチンの形を取り、w_赤、w_緑、w_青作業変数を宣言します。

コードは以下のものをコピペされてください。

Public Sub b_色の三原色を横に3列のセルに保存(w_セル As セル)
    Dim w_赤 As Long
    Dim w_緑 As Long
    Dim w_青 As Long
    
End Sub
「F_色の三原色を取得()」関数を使って、セルの背景色から、赤、緑、青色の値を取得し、セルの右どなりのセルへ値をセットする
「F_色の三原色を取得()」関数を使って、セルの背景色から、赤、緑、青色の値を取得し、セルの右どなりのセルへ値をセットする

次に、「F_色の三原色を取得()」関数を使って、セルの背景色から、赤、緑、青色の値を取得します。

w_赤、w_緑、w_青変数にそれぞれの光の三原色の成分の値が取得されます。

後は、呼び出し元のセルからの相対位置で、右に3列、B列、C列、D列へ、それぞれ赤、緑、青の値をセットしていきます。

以上でコードは完成です。

以下のコードをコピペされてください。

Public Sub b_色の三原色を横に3列のセルに保存(w_セル As セル)
    Dim w_赤 As Long
    Dim w_緑 As Long
    Dim w_青 As Long
    
    Call F_色の三原色を取得(w_セル.書式.色, w_赤, w_緑, w_青)
    
    w_セル.相対位置(0, 1).値 = w_赤
    w_セル.相対位置(0, 2).値 = w_緑
    w_セル.相対位置(0, 3).値 = w_青
End Sub

日本語VBAを実行

赤、緑、青色の値を取得したい、セルを範囲選択
赤、緑、青色の値を取得したい、セルを範囲選択

しれでは、VBAを実行します。

皆さんも上図のように、セルの背景色を色々と変えた A列を用意してください。

そして、光の三原色の成分を取得したいセルを範囲選択します。

「開発」タブ→「マクロ」をクリック
「開発」タブ→「マクロ」をクリック

開発」タブから「マクロ」ボタンをクリックします。

開発タブがエクセルに表示されていないときは、以下のURLにある方法で、開発タブを表示してください。

サブルーチン名を選択して、「実行」ボタンをクリック
サブルーチン名を選択して、「実行」ボタンをクリック

すると、「マクロ」ダイアログが開きますので、実行したいマクロ名(サブルーチン名)をクリックして選択し、「実行」ボタンをクリックしてそのマクロを実行します。

完成形。セルの背景色の光の三原色の値を取得できた。
完成形。セルの背景色の光の三原色の値を取得できた。

私のエクセルでは、上図のような結果になりました。

赤の成分に寄りすぎている背景色もありますし、全体にバランスの良い背景色もあります。

特に白色は、三原色の赤、緑、青の全てが最大の値で混ざっていますね。

白色は、全ての色が混じった色なのです。

このあたり、絵の具とは違いますね。

まとめ

皆さん、大変お疲れ様でした。

ここまで読んで頂いて、誠にありがとうございました。

今日の学びを以下にまとめます。

  • メイン処理では、選択範囲のセルを、「セルごとにサブルーチン呼び出し」メソッドでループさせた方が、一番楽な方法です。
  • 「セルごとにサブルーチン呼び出し」メソッドの呼び出し先のブロックでは、「F_色の三原色を取得()」関数で、意外とあっさり、光の三原色の成分を取得できました。
  • コードを実行するには、まず、セルの背景色を色々と違う色に設定し、そのセルを範囲選択します。
    次に、「マクロ」ダイアログからマクロ名(サブルーチン名)を選択し、「実行」ボタンをクリックすることで、コードを実行できます。

今回の課題は、ブロックや日本語関数を使うことで、大変短いコードになっています。

こういった、コードを応用し、今後に活かされてください。

それではー またー (^_^)/

The following two tabs change content below.
KaBA@フリーランス修行中

KaBA@フリーランス修行中

こんにちは!IT業界で勤めて17年くらい務めています。プログラミング大好きやろーです。 自分も独学でC言語を覚えIT会社に就職しました。その後紆余曲折を経て、VB6.0、VBA、Perl、C#、HTML、CSS、JavaScript、PHPなどを覚えていきました。全部C言語の独学時の経験がベースとなって、学習曲線が良いカーブを描いていました。 情報工学科を出ていなくても、独学でエンジニアは育つことができると思います! このブログで皆さんがプログラミングに興味を持たれるのを心待ちにしています! 頑張って覚えられてください!よろしくお願いします。 趣味は読書で、小宮一慶さんや松下幸之助さんなど著名人の本を読んでいる他、赤川次郎さんの三毛猫ホームズシリーズ司馬遼太郎吉川英治さんの三国志などが好きです。