Excel (VBA) |
![]() ![]() |
(指定なし : 指定なし)
色をCONSTで宣言する方法
投稿日時: 23/05/29 19:08:49
投稿者: わっしょい
|
---|---|
表題の通りですが、色をCONSTで宣言する良いほうをご教授ください。
|
![]() |
投稿日時: 23/05/29 20:29:12
投稿者: WinArrow
|
---|---|
こんな方法は?
Dim 赤 As Long Sub test() 赤 = RGB(255, 0, 0) End Sub |
![]() |
投稿日時: 23/05/29 20:47:23
投稿者: simple
|
---|---|
定数にこだわる理由をもう少し説明いただくとよいかと思います。
|
![]() |
投稿日時: 23/05/29 21:21:16
投稿者: 角田
|
---|---|
一体何を遣りたいのでしょう?
|
![]() |
投稿日時: 23/05/30 06:02:20
投稿者: MMYS
|
---|---|
組み込み定数を使わない理由は何故ですか。
|
![]() |
投稿日時: 23/05/30 15:03:34
投稿者: gombohori
|
---|---|
こういうことでよろしいか?
Enum MYCOLOR ' R G B RED = 255 + 256! * 0 + 65536! * 0 GREEN = 0 + 256! * 255 + 65536! * 0 BLUE = 0 + 256! * 0 + 65536! * 255 PINK = 255 + 256! * 153 + 65536! * 255 End Enum Sub sample() Range("A1").Interior.Color = MYCOLOR.RED Range("A2").Interior.Color = MYCOLOR.GREEN Range("A3").Interior.Color = MYCOLOR.BLUE Range("A4").Interior.Color = MYCOLOR.PINK End Sub |
![]() |
投稿日時: 23/05/30 21:03:02
投稿者: わっしょい
|
---|---|
皆様、忌憚のないご意見ありがとうございました。
|
![]() |
投稿日時: 23/05/30 21:14:00
投稿者: わっしょい
|
---|---|
ちなみに、
|
![]() |
投稿日時: 23/05/30 21:35:30
投稿者: わっしょい
|
---|---|
gombohori さんの引用: gombohoriさんありがとうございます。 電車の中で読んだときは、面白いアイデアだなとワクワクしていたのですが、 テストしたらコンパイル通りませんでした。 ありがとうございました。 |
![]() |
投稿日時: 23/05/30 21:38:11
投稿者: わっしょい
|
---|---|
WinArrow さんの引用: WinArrowさんありがとうございます。 輝度時に変数に全部読み込むようなことですよね。 この方法も、わかってるのですが、できれば違う方法を模索できればと思います。 ありがとうございました。 |
![]() |
投稿日時: 23/05/30 21:47:28
投稿者: gombohori
|
---|---|
>テストしたらコンパイル通りませんでした
|
![]() |
投稿日時: 23/05/30 21:54:46
投稿者: WinArrow
|
---|---|
COnst に拘っているならば
|
![]() |
投稿日時: 23/05/30 22:17:13
投稿者: gombohori
|
---|---|
Public Const 赤 As Long = RGB(255, 0, 0) は「定数式が必要です」とコンパイルエラーになりますが、これは試行した上での回答でしょうか |
![]() |
投稿日時: 23/05/30 22:43:50
投稿者: わっしょい
|
---|---|
gombohori さんの引用: gombohoriさん、遅くに早速のご回答ありがとうございます。 私の勘違いで、新規でBookを作ってテストしたらコンパイル通りました。 早とちりで誤報を垂れ流し、申し訳ございませんでした。 Enum MYCOLOR ' R G B RED = 255 + 256! * 0 + 65536! * 0 GREEN = 0 + 256! * 255 + 65536! * 0 BLUE = 0 + 256! * 0 + 65536! * 255 PINK = 255 + 256! * 153 + 65536! * 255 End Enum Sub sample() Range("A1").Interior.Color = MYCOLOR.RED Range("A2").Interior.Color = MYCOLOR.GREEN Range("A3").Interior.Color = MYCOLOR.BLUE Range("A4").Interior.Color = MYCOLOR.PINK End Sub でも実際に、書いてみると、変数名、設定値によって、微妙にインデントがずれますね。 そんなの当たり前じゃんと言われれるとそうなのですが、投稿されたみたいにインデントがそろってると すげーって思ったのですが、インデントがずれると微妙に読みづらいと感じてしまいました。 わがまま言って申し訳ございません。 でも、素晴らしいアイデアをいただいたと感謝しております。 本当にありがとうございました。 |
![]() |
投稿日時: 23/05/30 22:46:24
投稿者: わっしょい
|
---|---|
gombohori さんの引用: gombohoriさん、ご回答ありがとうございます。 これは '使用する色 '=============== VBAでできないのはわかっていて記載 =============== Public Const エラー時の背景色1 AS Double = RGB(255, 0, 0) Public Const エラー時の前景色1 AS Double = RGB(255, 255, 0) てな感じで本当はやりたいんです。できないけど。 と書かせていただいた通り、VBAでできないのはわかっていて記載しました。 |
![]() |
投稿日時: 23/05/30 22:51:39
投稿者: わっしょい
|
---|---|
WinArrow さんの引用: WinArrowさん、遅い時間にご回答ありがとうございます。 RGBの各値さえわかれば、Cellの背景色・前景色は、すぐ設定して色味が見えるのでソース上で簡単にわかるような宣言方法と記載いたしました。 >HEXで定義する時 >データ型を String にする意図が分かりません。 はい、私がテストもせずにWebから勝手にパクったコードなので、お許しください。 以後、気を付けます。 ご回答ありがとうございました。 |
![]() |
投稿日時: 23/05/31 08:49:20
投稿者: WinArrow
|
---|---|
私は、RGB各々の値で色を想像できません。
|
![]() |
投稿日時: 23/05/31 09:00:38
投稿者: hatena
|
---|---|
わっしょい さんの引用: gombohoriさんのアイデアをお借りして、下記のような感じでどうでしょう。 Const R As Long = 1 Const G As Long = 256 Const B As Long = 65536 Enum MYCOLOR RED = 255 * R + 0 * G + 0 * B GREEN = 0 * R + 255 * G + 0 * B BLUE = 0 * R + 0 * G + 255 * B PINK = 255 * R + 153 * G + 255 * B End Enum |
![]() |
投稿日時: 23/05/31 09:37:24
投稿者: VBA-stepup
|
---|---|
失礼します。
Sub myColorNo() Dim colorws As Worksheet Dim colorNo(2) As Long Set colorws = ThisWorkbook.Worksheets("color") colorNo(0) = colorws.Range("A1").Interior.Color colorNo(1) = colorws.Range("A2").Interior.Color colorNo(2) = colorws.Range("A3").Interior.Color Dim ws As Worksheet Set ws = ThisWorkbook.Sheets.Add ws.Range("A1").Interior.Color = colorNo(1) End Sub |
![]() |
投稿日時: 23/05/31 10:01:20
投稿者: WinArrow
|
---|---|
セルを利用するアイデアその2
|
![]() |
投稿日時: 23/05/31 11:15:18
投稿者: QooApp
|
---|---|
引用: ユーザーに表示させないワークシート(非表示化と必要であればロック)に1セル1色使用条件で紐づけるWinArrowさん方式が一番楽だと思います。交渉中は自由に設定できるようにしておいて依頼者に直接配色させることもできます。 技術屋と顧客(ないし感覚型の人)の乖離を埋める方法で一番手っ取り早いのは相手の土俵に寄せることだと思います。それが技術屋側の表現方法で意図をくみ取りにくいのが根本的な原因となると思います。 私がExcelマクロ系で彩色を行う場合の処理は原則依頼者にすべて定義させたものを受領して加工するようにしています。 ※加工元ファイルと理想の加工結果(配色や配置、計算処理含む)を提出してもらってます。 余談 あとはメモ帳ファイル(txtファイル)とかに配色表データを任意の空白文字(タブとか)を挿入しながら書き出し、ファイル読み込み時に空白文字の削除や読み取りスキップ処理で対応することも可能かと思います。 |
![]() |
投稿日時: 23/05/31 18:11:24
投稿者: わっしょい
|
---|---|
皆様、忌憚のないご意見ありがとうございました。
|