カラーチャートの作成 Macユーザー向け Excel VBA 入門 [04] Excel2019 for Mac
![Excel2019 VBA Primer[04] CatchImage(Png)](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf6kf5j7oSukXXNF3EoVYbOnQdrFl-KiK5pbtngKwTdBT60P35rZPJ7m0kz_lNEPd6L8OAMqtqPf40APekPnlSJ9-Ky8bTuWVS0CKkLaPtKqgI87Iwckcz2sbvW2_yjoSOPM-j1WCpG9Y/s320/20210628_11.png)
[04] コードの説明は後にして、VBAで「カラーチャート」を作ろう!
・VBAコードは、テキストエディタで編集後「コピー&貼り付け」可能!
・プロシージャは「 (a) 前処理 (b) メイン処理 (c) 後処理 」の3構造が基本!
・VBA文法チェックは、「VBAProject のコンパイル」にて!
・Subプロシージャの呼出は、Call ステートメント を利用!
[04] コードの説明は後にして、VBAで「カラーチャート」を作ろう!
まず、Excel メニューバーの [ヘルプ] - [更新プログラムのチェック] にて、適用されていないアップデートがあれば行ってください。
空白の「新規ブック」を作成後、 VBAコードが保存できるよう Excelマクロ有効ブック (.xlsm) ファイル形式で 「名前を付けて保存」。 名前(ファイル名)はお好きにどうぞ。 OneDrive 内に保存すると他のMacやWindowsPCからも開けて便利ですよ。
![vba2019_primer[04] 01_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5RzV6AANT3kvmq3FBNhbuYKscfWVM3PfRfPXmX2wXgb_Zj-8nqBJRgUA8FiJ0wenTjTIk7pLCKgObCia5nq-6eyrcsxFwf1wBv91RJ1nh2VSNhy2yw_erCIuRlL-Oqea99OYb0jtWkvU/s0/20210628_01.png)
開発リボンの [マクロの記録] アイコンをクリックして表示される(下記)画面で「マクロの保存先」が「作業中のブック」か確認し、マクロ名は ColorChart 、説明に カラーチャート と入力。
最後に [OK] ボタンをクリックすると、「マクロの記録」が開始されます!
![vba2019_primer[04] 02_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil_Wzf1SSSy1u_zf9-BLRhfrUGLKaLWzb71kCAbelSXOq5_VVT1k5zKokN1yifJcT70SADyz9helGEUArpXbVaRbXo0r0hOTPeRfK7RgyzYHPQ5my_VNKyuqlqMLyeQ4Db79_CHFXkhn8/s0/20210628_02.png)
"A5" などの適当なセルを選択後に 開発リボンの [記録終了] アイコンをクリックすると、 ColorChart マクロが保存される。
次に、開発リボンの [マクロ] アイコンをクリックし、登録されているマクロを表示(下記画面を参照)
![vba2019_primer[04] 03_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWjrYxdiXv7qsWedl-u_z4_g311u73LahdZHrg6umfc0IqRB-j-5F98PBWkblbZHx7bnZzQcaSF7tbd3fcomcA7jGiMXmPzZITAqmMAHT8JqkIyIZRIol0ido9_wTNE9WfaQ1u4zLSPFM/s0/20210628_03.png)
(複数のマクロが登録されている場合はリストボックスに表示されるため ColorChart を選択後)、下記画面のように「編集」ボタンをクリックすると、VBEウィンドウが開き「ColorChart」 Subプロシージャ が表示される。
![vba2019_primer[04] 04_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja2mcs_-euM0USMG93zUb5Rc9tfXgpbsLRqiI5KesOswx3Z_2SaOTG_qSrQvOexC0HIlhvcsTHSkaVTDNZyrilPRVn42_Jo4wOd94eKnDx4ykraNT-wJNhRyNmUzTAdmNy-nh3-exapTA/s0/20210628_04.png)
前回 VBE 環境設定を変更したため、 Module1 の先頭行に 変数の宣言を強要する「Option Explicit」が付加されていますね。(下記画面)
そのため 当モジュール内で 変数を宣言せずに利用すると、エラーが表示されます。 つまり、「Option Explicit」が先頭に記述されていないモジュール内では 変数を宣言せずに利用してもエラーになりません。 誤った変数名を記述しても(エラーとならず)バグを引き起こす場合が多いため、通常は「変数の宣言を強要」させましょう。
![vba2019_primer[04] 05_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSSv_vpQV490X3iIPq4rCxQ5VyNYFPSWkGYiyOSi5-eg7WXe-bMshQk8rUM0clgXzSeCNzzRUbQeZ3hcTYgywlXaJwDL2am-hVnY7jXGcr34eFcqkr88K2lb2RZz4sHQj4WGzlicQ__L0/s0/20210628_05.png)
Excel カラーチャート(by HTMLカラーコード) の作成
VBAコードは、テキストエディタで編集後「コピー&貼り付け」可能!
Option Explicit
Sub ColorChart() ' 標準コードのフォントを「MS Gothic 16point」に変更
' ColorChart Macro
' カラーチャート
Const iSTEP As Integer = 32 ' 64 32 16 8 のどれかを選択
Dim iRed As Integer, iGreen As Integer, iBlue As Integer
Dim lRow As Long, lCol As Long
Dim sTemp1 As String, sTemp2 As String
ActiveSheet.Cells.Clear ' アクティブシートのクリア
For iRed = 0 To 256 Step iSTEP
lCol = iRed / iSTEP + 1
lRow = 0
For iGreen = 0 To 256 Step iSTEP
For iBlue = 0 To 256 Step iSTEP
lRow = lRow + 1
If iRed > 255 Then
iRed = 255
End If
If iGreen > 255 Then
iGreen = 255
End If
If iBlue > 255 Then
iBlue = 255
End If
Cells(lRow, lCol).Interior.color = RGB(iRed, iGreen, iBlue)
Cells(lRow, lCol).Value = iRed & ", " & iGreen & ", " & iBlue
Next iBlue
Next iGreen
Next iRed
sTemp1 = Cells(lRow, Int(lCol / 2)).Address(False, False)
Range("A1:" & sTemp1).Font.color = rgbWhite
sTemp2 = Cells(lRow, lCol).Address(False, False) ' CellsのRange表記を取得
Range(sTemp2).Select ' 選択セルが見えるよう、スクロールされる
End Sub
上記コード画面内にカーソルを重ねると 画面右上に「コードをコピーする」ボタンが表示されるため、クリックして 全コード(初期画面表示されているのは二十数行目まで...)をコピーします。 (もちろん、手入力も OK )
次に、下記画面どおりに操作し、 Mudule1 内の 全VBAコードを 置換します。 (上記コード画面内でスクロール操作すると、全45行まで表示可能)
![vba2019_primer[04] 06_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAV76oyuSzcXmeGbGENrF0jmNxh7mOrv7pAN-yrlwXjarRWzExGpLYeDs1GdapBcRTQ9AR1M2x2tsDbpaWLAhBG2cD6_olieKjQPAn069G5w6QLRA54aoggsidSBQj3YgadwFyZfLP7Qo/s0/20210628_06.png)
プロシージャは「 (a) 前処理 (b) メイン処理 (c) 後処理 」の3構造が基本!
ColorChart Subプロシージャ だと、「 For iRed = 0 」から「 Next iRed 」までのループ(繰り返し)部分が メイン処理で、 それ以前が 前処理、 それ以降が 後処理。
![vba2019_primer[04] 07_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG604EqjyZIfQ0B8vgNaK32ierhk8s05lLQEAR5DFUAeoR2DIJxMoeGz83y-zOLPGP0sndCi8EsXem9quKkI1P2cMPQCp529_Ubb9kb3PuZp5ig_Y-WeMRoK15WFEtq08Gh2k4QHLlJmM/s0/20210628_07.png)
![vba2019_primer[04] 08_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3eH3kgMshw2TR71lD3Ugz0hTYIHXtaegDXX7V6wV5S7-oLWr7p5pJG0ZCWIesl5j5S7a2prkXKwVMUuKcoCCzj8u4dXUuc8oZvrf4NPLGLpFeTmCTxwNG_FrsaVBtgbCWq5RsZyJgJnc/s0/20210628_08.png)
VBA文法チェックは、「VBAProject のコンパイル」にて!
コード入力確認も兼ねて、VBEメニュー [デバッグ] - [VBAProject のコンパイル] を行いましょう!
エラーが表示された場合は、その箇所を修正後に(エラーが表示されなくなるまで)上記操作を繰り返す必要あり。 (Option Explicit が 当モジュールの先頭に記述されているため、変数名を間違えるとエラー表示) [VBAProject のコンパイル] メニューがグレー表示でクリック出来ない場合、既にコンパイル済みで VBA文法チェックも問題ありません。
![vba2019_primer[04] 09_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgocvYvMD6fWwWO0XuvpSkLZVWRek0tptVOvr0zCln9cm-C0DYZ6sH_NnxI93MNb5QVosRd638qNn4_lJcrGJwG2tytrzQlab0k1Uic4qEAz12HRKSaX2Tz4FtO0eFbgps8YJzcU3K1oFQ/s0/20210628_09.png)
Subプロシージャの呼出は、Call ステートメント を利用!
![vba2019_primer[04] 10_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfGecnrTPYx402cFSYNOQTcrEkoTS09R724UmDXC02vjokuehmfVKmTb277npYH9NIvZfhEd-jA5tBBLJBWGiab3a3w-bAvgBuNLi2DSJPiekJafIJdh_hpGwUpdm_IgVgfrTPnhVqHPY/s0/20210628_10.png)
上記画面のとおり、 Subプロシージャの(実行)呼出は、Call ステートメント を利用します!
iSTEP の数値変更後の再実行は、イミディエイトウィンドウ内をクリックすると Call行の次の行でカーソルだけ表示されている筈なので、 BackSpace に該当する 大きい方の [delete] キーを押し Call行の最後に戻ってから 再度 [return] キーを押してください!
ColorChart Subプロシージャ内で コメントを除くと先頭行の Const iSTEP As Integer = 32 の最後の数字に注目してください!
色の「RGB要素パラメータ 0 から 255 までの 256通り 」を幾つおきに表示するかの指定で、 256 ( 28 ) の約数 を指定する必要あり( 2n かつ 8の倍数 を推奨 )
32、16(、8) の順でお試しください。
32 指定だと 0, 32, 64, 96, 128, 160, 192, 224, 255 の順に増加して、 Aからiまでの 9列 が表示されます。
![vba2019_primer[04] 11_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMDwnc9jS5dtEOWHcRh4gUnxvm6OQ6jx2r9a9auFieZGdZ34a2QJWdiQNQpQlmjGReJh-5o8Pav9LylLtYwySsE4KDFPCH1QfpOjJ4KTNG6Bj34Yfb0aXoazkaKtgGbMWqIE-cqiwbD58/s0/20210628_11.png)
8 を指定する場合は要注意で、メモリが足りなくて(スワップ利用領域が増えると)下記エラーメッセージが Mac の場合表示されます。 8GBメモリ搭載の Mac mini 2014 でも、何度も実行すると エラーが出ることがありましたので...
同時実行しているアプリにも依存しますが、 メモリ4GB の Mac(Book) では 16 以上の指定 でお願いします。 ちなみに、 8GB Mac mini 2014 にて 8指定で実行すると、画面描画後 5分くらい Excel が反応しなくなるようですが、時間さえ経てば問題は無いようです。
8 指定で実行する直前に、Excelの再起動をオススメします!
![vba2019_primer[04] 12_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwtmSyXarvFNgB0-fkyfFEP2J_D_rtZWwwdTS5bD_WRu0ttr9meb5uASAm4VBzlWTz9DI0Rv_Wt71HxibUFAU4dRkDdF_GHxtUX3lhh3PWBIijjOxZFR0PK-yhsvhaBHrplamR7-ZIRog/s0/20210628_12.png)
![vba2019_primer[04] 13_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_c6-hn1CdjtF8ThOXUf0UINsWozMrHCdEV70FG9C7zJRANRvkQ5Giho7Cb2AifGD-KJ7bfIV9MKfAHVB7lnFuQY47lERqatk8LOeKnWCu-X0JM9YaOpNrKgdymUdGq1LNfh9v3USTN-w/s0/20210628_13.png)
![vba2019_primer[04] 14_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS94iQv5FN8SsfV4IVZyL35KaGC3FfBpqkv-Eei6kP9CwXhAzhnQ7WMmIiuR97RgxI10Y-nFIKLiVs18NgaXoYXEEFiz-wYq6AnOBuv-e-WreQ3lsUKal9yeK68AmllW29NE3EOtdUbS0/s0/20210628_14.png)
以下3つの画像も、iSTEP が 8 の場合のサンプルです!
![vba2019_primer[04] Blue_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZXE0yyGqOmp63WarpU0W2XKBaQhWcPx4P-UWZmWvsfsVHI1PXXrGTnyf7BIidleHnQwsexPqMiDZRYg71Y_1lryysbkPIsp2qjH8n9G7nEEoBpH4YT4ITqCZDgnN1Y8f_bqdanawTMNk/s0/20210628_A1.png)
![vba2019_primer[04] Red_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3e_BKxE33rV_M7-g15t_woqlRnSKf2AYbXDLg3ZUybpKqWJuo-o8Z23hRsB2qmWkv88WF9Rofx3V0Cq2IoPKw8djBaFIYy2FuALGbaJELd5jNRnUDGcT97CwMUxWsfjTsY4AIOAt8BAI/s0/20210628_A2.png)
![vba2019_primer[04] Green_png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPhSLiRvBZzrzEtIEtaBbRw-EvKl5lOptaRHKs-2Sd7vybdbsnL4zXMKVUalbDkqRGsTh9i-NdLxhpQo9ISpQ2gIf50Kfu8C_G4davqRjrPxwPokfAvt6L2xpdQ_PMc0bcqFtcqijocwI/s0/20210628_A3.png)
[command] + [Q] にてまず VBE を終了し、Excel のウィンドウ内を選択して [command] + [Q] にて Excel も終了させます。 「作業中のブック」を保存するか確認のダイアログ画面が表示された場合は 「保存」しましょう。 「自動保存」済みの場合、保存するかどうかの確認ダイアログ画面は表示されません。
お疲れ様でした! 次回は、変数や定数の宣言方法など、 カラーチャート の VBAコード 解説編となります!
最後まで読んでいただき、ありがとうございます。 また、お越しくださいませ。
// アタル