top of page

​タグ一覧

配列処理(73)

階層化フォーム(33)

ファイル操作(28)

開発事例(22)

シート・セル操作(18)

図形操作(13)

コード自動生成(10)

ユーザーフォーム(9)

文字列操作(8)

設計思想(7)

開発効率化(6)

数学(6)

GAS(5)

アニメーション(5)

技術解説(4)

講座実施報告(5)

イミディエイトウィンドウ(4)

Googleスプレッドシート(4)

副業(4)

クリップボード(4)

条件付き書式(4)

その他(4)

ココナラ(3)

小説(3)

HTML(3)

JavaScript(3)

OneDrive(2)

イベントプロシージャ(2)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

介護(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

罫線(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

ステータスバー(1)

コード解析(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

溶接ロボット(1)

保育士(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

放課後等デイサービス(1)

児童福祉支援(1)

学校(1)

UI(1)

CAD(1)

カーソル操作(1)

課題チャレンジ共有会 第2回 「最も近い色を見つけよう!」 提出物解説 (Excel VBA)

更新日:2025年12月30日

<概要>

 2025年1月11日に開催されたExcel VBA関連のイベントでの当方で提出した回答について簡単に解説いたします。

課題チャレンジ共有会 Excel VBA

 今回のようなイベント等は下記Discordコミュニティにて通知があったりしますので、ぜひご参加ください👍

 過去の課題の内容や、集まった回答なども確認できます。

Excel-Fun.xls Excel VBA

<課題の解説>

 今回のイベントでの課題は次のようなものでした。


 まず、次の表のようにVBA組み込みのXlRgbColor定数一覧がまとまっています。

最も近い色を見つけよう! 色一覧 Excel VBA

 次に、特定の色を指定(例:セルの塗潰し)された状態でそのセルの色に最も近い色を、上記の表の色の中から算定する。というのが課題となります。


<提出した回答>

 提出した回答を解説します。


 まず基本機能は次のようになっています。


 ①セルの塗潰色で色を指定

 ②「近い色取得」ボタンをクリック

 ③結果が表示される

の簡単な仕様となっています。

最も近い色を見つけよう! 基本仕様 Excel VBA


 「近い色取得」ボタンに登録されているマクロのトッププロシージャを参考に載せておきます。コード全体は本記事の最後と、記事に添付してあるファイルのダウンロードで中身確認をよろしくお願いします。



最も近い色を見つけよう! 近い色取得 Excel VBA

 コーディングのポイントだけ解説します。

・処理の流れは「入力」「処理」「出力」でまとめる。「入力」→「情報取得」、「処理」→「一番近い色をRGB値の二乗差で見つける」、「出力」→「決定した色の情報出力」。こうすることでコード全体の見通しを立てやすくする。

・「近い色の探索」にはRGB値の3つの値の二乗差(ユーグリット距離)が最も小さいものとする。ほかにHSL、Lab、CIEDE2000などのあるので興味のある方は調べてみてください。

・関数名、変数名は日本語を利用して可読性、保守性を担保する

・セルの参照は名前定義を利用することで、シートのフォーマット変更に強い仕様とする。

・色のRGB値はユーザー定義型(構造体)を利用してコーディングしやすく、可読性を担保。

・持ち前の汎用プロシージャを利用してコーディングを効率化する


<提出した回答(おまけ機能)>

 上記の回答だけだと面白味にかけるので、おまけ機能をいくつか追加しました。


 ○カラーパレットからの入力

 自作のカラーパレットを利用して、セルの塗潰色の変更を効率化しています。

 Excel標準機能のセルの塗潰しだと、1つ色の変更に毎回ダイアログなどの表示が必要になってきますが、この機能を用いればユーザーフォームが起動中の間にいろいろな色に変更ができたりします。


 ○近い色で並び替え

最も近い色を見つけよう! 近い色で並び替え Excel VBA

 「近い色で並び替え」ボタンでRGB値の二乗差が小さい順に並び替えた表を出力します。実際にどの色が近い順として計算されているかを可視化できます。


 ○アニメーション

 入力する色を徐々に変化させて、同時に近い色が順次変化していきます。

 「停止」ボタンで停止させることもできます。

 

 参考にコードも載せておきます。

最も近い色を見つけよう! アニメーション Excel VBA

・「アニメーション」が実行中を「停止」ボタンで止めている処理の実現にはループ内をDoEventsを記述しておいて、Private変数のPri_JudgeStopの値を「停止」ボタンで「False→True」と変更することで停止させています。この処理は実際の現場での実装でも役に立つ処理で、例えば「複数アドレスへのメールの一括送信」を途中で止めたいなどで同様の処理を利用したりします。

・アニメーションでの色の変化はRGBの3つの値をそれぞれ三角関数で周期をずらして変化させています。


<コード>

「近い色取得」ボタンに登録してあるプロシージャの全体コードを記載しておきます。

より詳細は記事に添付してあるファイルを確認してみてください。



階層構造

最も近い色を見つけよう! 階層構造 Excel VBA

コード全体




Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

Softex-Celware

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page