6

セルのフォントの色を特定の RGB 値に設定したい。

私が使用する場合

ActiveCell.Color = RGB(255,255,0)

黄色になりますが、次のようなよりエキゾチックな RGB 値を使用すると:

ActiveCell.Color = RGB(178, 150, 109)

グレーの色が戻ってきました。

RGB値を使用できないのはなぜですか? そして、回避策を知っていますか?

ありがとう。

4

4 に答える 4

2

簡単なヒント: Excel パレットには、めったに使用されない 2 行の色があり、通常、他の人のシートに目に見える変更を加えることなく、カスタム値に設定できます。

以下は、デフォルトよりもはるかに攻撃的でない「ソフトトーン」色の合理的なセットを作成するコードです。

Public Sub SetPalePalette(オプションの wbk As Excel.Workbook) ' このサブルーチンは、コントロール、見出し、およびダイアログに使用できる薄いトーンのカスタム パレットを作成します '

' ** このコードはパブリック ドメインにあります ** ' Nigel Heffernan http://Excellerando.Blogspot.com

' Excel のカラー パレットには、めったに使用されない非表示の行が 2 つあります。 ' 行 1: 色 17 ~ 24 ' 行 2: 色 25 から 32 - このブックの SetGrayPalette で使用 '

' 既存の画面更新設定をキャプチャするコードと、必要に応じて、 ' この手順が刺激を生成する間、一時的に更新を中断します ' 画面上でちらつきます...必要に応じて、終了時に画面の更新を復元します。

Dim bScreenUpdating As Boolean

bScreenUpdating = Application.ScreenUpdating

bScreenUpdating = True の場合 Application.ScreenUpdating = False 終了条件

'If Application.ScreenUpdating <> bScreenUpdating Then ' Application.ScreenUpdating = bScreenUpdating 'エンド・イフ

wbk が何もない場合 wbk = ThisWorkbook を設定します 終了条件

wbk あり

.Colors(17) = &HFFFFD0  ' pale cyan
.Colors(18) = &HD8FFD8  ' pale green.
.Colors(19) = &HD0FFFF  ' pale yellow
.Colors(20) = &HC8E8FF  ' pale orange
.Colors(21) = &HDBDBFF  ' pale pink
.Colors(22) = &HFFE0FF  ' pale magenta
.Colors(23) = &HFFE8E8  ' lavender
.Colors(24) = &HFFF0F0  ' paler lavender

で終わる

If Application.ScreenUpdating <> bScreenUpdating Then Application.ScreenUpdating = bScreenUpdating 終了条件

サブ終了

Public Sub SetGreyPalette() ' このサブルーチンは、コントロール、見出し、およびダイアログに使用できるグレーシェードのカスタム パレットを作成します

' ** このコードはパブリック ドメインにあります ** ' Nigel Heffernan http://Excellerando.Blogspot.com

' Excel のカラー パレットには、めったに使用されない非表示の行が 2 つあります。 ' 行 1: 色 17 ~ 24 ' - このワークブックの SetPalePalette で使用 ' 行 2: 色 25 から 32

' 既存の画面更新設定をキャプチャするコードと、必要に応じて、 ' この手順が刺激を生成する間、一時的に更新を中断します ' 画面がちらつく... 終了時に画面の更新を復元することを忘れないでください!

Dim bScreenUpdating As Boolean

bScreenUpdating = Application.ScreenUpdating

bScreenUpdating = True の場合 Application.ScreenUpdating = False 終了条件

'If Application.ScreenUpdating <> bScreenUpdating Then ' Application.ScreenUpdating = bScreenUpdating 'エンド・イフ

このワークブックで .Colors(25) = &HF0F0F0 .Colors(26) = &HE8E8E8 .Colors(27) = &HE0E0E0 .Colors(28) = &HD8D8D8 .Colors(29) = &HD0D0D0 .Colors(30) = &HC8C8C8 ' &HC0C0C0 ' &HC0C0C0 をスキップ - これはメイン パレットの通常の 25% グレーです .Colors(31) = &HB8B8B8 ' ギャップが広がっていることに注意してください: 人間の目はより敏感です .Colors(32) = &HA8A8A8 ' はライト グレーの変化に対応するため、線形スケールとして認識されます。 で終わる

'Excel のデフォルト パレットの右側の列は、次のグレーを指定します。

' 色(56) = &H333333 ' 色(16) = &H808080 ' 色(48) = &H969696 ' Colors(15) = &HC0C0C0 ' デフォルトの '25% グレー'

' これは、色の「ギャップ」を改善し、色を簡単に区別できるように変更する必要があります。

このワークブックで .Colors(56) = &H505050 .Colors(16) = &H707070 .Colors(48) = &H989898 ' .Colors(15) = &HC0C0C0 で終わる

If Application.ScreenUpdating <> bScreenUpdating Then Application.ScreenUpdating = bScreenUpdating 終了条件

サブ終了

各ワークブックの Open() および BeforeClose() イベントに対して 'CaptureColors' および 'ReinstateColors' 関数を記述することを選択できます...または、各ワークシートのアクティブ化および非アクティブ化イベントに対しても可能です。

3-D チャートの「熱」カラー グラデーションを作成するコードがどこかにあり、「コールド」ブルーから「ホット」レッドまで 32 段階で変化します。これは想像以上に難しい: 人間の視覚システムによって「等間隔」として認識される色のグラデーション (強度の対数スケールで実行され、「強い」色として赤、緑、青の非線形の重み付けを持つ) ) の作成には時間がかかります。VBA を使用して、指定した色を指定した順序で使用するように MS Chart を強制する必要があります。

于 2012-08-20T16:39:23.037 に答える
1
Sub color()

bj = CStr(Hex(ActiveCell.Interior.Color))
If Len(bj) < 6 Then
    Do Until Len(bj) = 6
        bj = "0" & bj
    Loop
End If

R = CLng("&H" & Right(bj, 2))
bj = Left(bj, Len(bj) - 2)
G = CLng("&H" & Right(bj, 2))
bj = Left(bj, Len(bj) - 2)
B = CLng("&H" & bj)

End Sub
于 2012-01-12T14:45:07.077 に答える
0

回答とコメントもありがとうございます。

私のクライアントには他のプラグインが Excel にインストールされていて、カラー パレットも改ざんされていたので、本当に大変でした。

パレットのいくつかの色を置き換えてから、要素に特定の ColorIndex を割り当てましたが、きれいではありません。

于 2008-12-26T21:54:43.360 に答える