top of page

​タグ一覧

配列処理(67)

階層化フォーム(33)

ファイル操作(23)

シート・セル操作(11)

コード自動生成(10)

ユーザーフォーム(8)

図形操作(7)

GAS(5)

アニメーション(5)

技術解説(4)

副業(4)

考え方(4)

条件付き書式(4)

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

Enum(3)

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

ココナラ(3)

クリップボード(3)

介護(3)

開発効率化(2)

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

PDF(2)

フリーランス(2)

リスキリング(2)

Excel(2)

Excel小ネタ(2)

数学(2)

Outlook(2)

文字列操作(2)

小説(2)

HTML(2)

JavaScript(2)

日報(2)

カレンダー(2)

パズル(2)

ステータスバー(1)

コード解析(1)

静的変数(1)

OneDrive(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

六角形(1)

Excel遊び(1)

ボウリング(1)

時計(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

イベント(1)

溶接ロボット(1)

VBA(1)

脱Excel(1)

Discord(1)

ECサイト(1)

CSV(1)

楽天(1)

保育士(1)

シフト表(1)

CDP(1)

楽天市場(1)

経理(1)

javascript(1)

医療(1)

文書作成(1)

LookerStudio(1)

シフト(1)

セキュリティ(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

罫線(1)

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

ライブラリ処理(1)

開発事例(1)

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

<概要>

 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

コード全体




コメント

5つ星のうち0と評価されています。
まだ評価がありません

評価を追加
Softex-Celware

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page