- ベストアンサー
エクセル BGR?
http://oshiete1.goo.ne.jp/qa4068415.html こちらでセルA1から他のセルB1の背景色を指定する方法を教えていただきました。 ありがとうございます。 うまくはいったのですが、指定されたカラーコードの認識が、 RGBではなくBGRのようですね。 A1でRGBで指定したカラーコードの通りに、B1の背景色を表示することは可能なのでしょうか? よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
前回回答したものです。 A1にカラーコード表す6桁の16進数があり、赤(左2桁)、緑(中2桁)、青(右2桁)とした場合 ご指摘の通り赤と青が逆になってしまいます。 そこで Range("B1").Interior.Color = Target.Value の代わりに R_CODE = Right(Target.Value, 2) G_CODE = Mid(Target.Value, 3, 2) B_CODE = Left(Target.Value, 2) Range("B1").Interior.Color = CLng("&h" & B_CODE & G_CODE & R_CODE) と右2桁と左2桁を入れ替えてはどうでしょうか? 注)B1に10進数で入力している場合はHEX関数で一度16進数に変換してから
その他の回答 (2)
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。 Excel で使用される色は、 [ツール]-[オプション]-[色] で定義されているカラーパレットに依存します。Color プロパティーに カラーコードを指定しても、カラーパレットの何れかの色に丸められて しまいます。 用途によると思うのですが、真に任意色に変更したいのであれば、 カラーパレット側を変更しなくてはなりません。 Private Sub Worksheet_Change(ByVal Target As Range) Dim vColor As Variant If Target.Address <> "$A$1" Then Exit Sub On Error Resume Next vColor = Target.Value If VarType(vColor) = vbString And Len(vColor) = 6 Then ' // 16進カラーコードの場合(例)D6D6D6 Dim r As Integer, g As Integer, b As Integer r = CInt("&H" & Mid$(vColor, 1, 2)) g = CInt("&H" & Mid$(vColor, 3, 2)) b = CInt("&H" & Mid$(vColor, 5, 2)) vColor = RGB(r, g, b) Else ' // 数値の場合(整数以外はClngで適当に丸め) vColor = CLng(vColor) End If ' // パレットの色を変更してから、カラーインデックスで指定する ThisWorkbook.Colors(1) = vColor Range("B1").Interior.ColorIndex = 1 End Sub
- okormazd
- ベストアンサー率50% (1224/2412)
RGB関数の返り値は、RGB(r,g,b)で、 RGB(255,0,0)=255 RGB(0,255,0)=65280 RGB(0,0,255)=16711680 で、 A1が255で赤 A1が65280で緑 A1が16711680で青 RGBになりませんか。
お礼
ご指定の方法で可能ではあるのですが、 他のセルを指定しての方法でしたので、繁雑になってしまいました。 御回答ありがとうございます。
お礼
重ね重ねありがとうございます。 こちら、最後のコードのB_CODEとR_CODEを入れ替えましたが、うまくいきました! 本当に助かりました、ありがとうございます。