• ベストアンサー

エクセル BGR?

http://oshiete1.goo.ne.jp/qa4068415.html こちらでセルA1から他のセルB1の背景色を指定する方法を教えていただきました。 ありがとうございます。 うまくはいったのですが、指定されたカラーコードの認識が、 RGBではなくBGRのようですね。 A1でRGBで指定したカラーコードの通りに、B1の背景色を表示することは可能なのでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.1

前回回答したものです。 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進数に変換してから

ideal16
質問者

お礼

重ね重ねありがとうございます。 こちら、最後のコードのB_CODEとR_CODEを入れ替えましたが、うまくいきました! 本当に助かりました、ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。 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)
回答No.2

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になりませんか。

ideal16
質問者

お礼

ご指定の方法で可能ではあるのですが、 他のセルを指定しての方法でしたので、繁雑になってしまいました。 御回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelの、指定したセルに色をつける方法

    よろしくお願いいたします。 最近エクセルをさわりはじめ、以下のようなことをしたいのですが、やり方がわからずに困っています。 セルA1にカラーコードを入力し、その色が自動的にセルB1の背景色として表示される。 と、いった具合です。 お分かりの方いらっしゃいましたら、どうかよろしくお願いいたします。

  • Excelの複数のセルを一つに表示する方法その2

    以前下記の質問をしましてNo.3を活用しております。 http://oshiete1.goo.ne.jp/qa3502367.html なのですがここで新たな問題が発生しました。複数のセルの中で同じ言葉が入っていた場合その内の1つのみを表示するにはどうしたらいいでしょうか? (例)  A  B 1 a a,b,c 2 b 3 c 4 a 5 c

  • EXCEL VBAでカラーチャートを作りたいです

    お世話になります。VBAを勉強中の者です。 自分なりに調査してみたのですが、解決できなかったので質問させて頂くことにしました。 EXCEL2003を使ってカラーチャートを作成しています。 1セル1色を、(色の)漏れがなく、かつ、ダブり無く塗りつぶし、 1つのシートのセルを全て使って256×256×256色のグラデーションを作成しようとしています。 上述カラーチャートを作成するにあたり、 まずは簡単なSubプロシージャを作成することにしました。 RGB関数のRedの値を0から255まで変化させ順次セルを塗りつぶすことで 黒→赤 のグラデーションを得ようと考えたのです。 作成したコードは以下の通りです。 このコードを実行すると、意図している黒から赤への連続的なグラデーションは得られず、 Redの値が0から64までは黒、65から192までは栗色っぽい色、193から255までは赤 という3色しか表示されない結果となりました。 Excelは、セルの塗りつぶしやフォントの色などをカラーインデックスという形で 保持しているということまでは、調査で把握しました。256色の連続的なグラデーション ではなく、3色のグラデーションとなってしまったのは、RGB関数で指定した値が カラーインディックスに丸め込まれたからであるとは予想がつきますが、 RGB関数で指定した色でセルを塗りつぶす方法が分かりません。 グラデーションを得るにはどうすれば良いのでしょうか? お力をお借りしたいです。宜しくお願い致します。 - - - - - - - - - - - - - Sub RGB_Color_Red() Dim n As Long Dim cnst As Long cnst = 0 For n = 1 To 256 Cells(n, 1).Interior.Color = RGB(n - 1, cnst, cnst) Next End Sub - - - - - - - - - - - - -

  • Excel スピンボタン 対象範囲(訂正)

    http://oshiete1.goo.ne.jp/qa4685879.htmlの訂正版です。 説明が不十分だったため変更します。 Excel2003での質問なのですが、 スピンボタンのリンク先を複数のセルに指定したいのですが、やり方がわからずに困っています。 具体的には 3つのセルの値を1つのスピンボタンで加減するように組みたいのです。 3つのセルの値は違うもので、=で繋げたくはありません。 A1 B1 C1 ▲ 1  5  6  ▼ ↑の状態で「▲」を押すと A1 B1 C1 ▲ 2  6  7  ▼ になる物を作りたいです。 (1)A1、B1,C1を個々で+-するスピンボタンと (2)A1、B1、C1を一括で+-するスピンボタンを作りたいのです。 (1)は作れたのですが(2)のやり方がわかりません。 1つなら簡単にリンク先として指定できたのですが、複数選択するとエラーになってしまいます。 どうしたらいいでしょうか? やはりマクロ等を組まないといけないのでしょうか? 方法を知っている方がいらっしゃいましたら教えていただけると嬉しいです。 よろしくお願いします。

  • 別ページからOnclickで背景色変更

    いつもお世話になっております。 以下の過去質問で、同一ページ内によるonclickによる セルの背景色変更を拝見しましたが、 同一ページではなく、別ページからonclickによって、 該当のページの任意のセル背景色変更は可能でしょうか。 http://oshiete1.goo.ne.jp/qa696811.html (例) a.htmlソース <a href="b.html#b1" onClick="ChgBg('td1','black')">b1へリンク</a> b.htmlの#b1へリンクすると、 idがtd1のセル背景色が変更される。。。 宜しくお願い申し上げます。

  • 【Excel】セルの背景色、文字色のRGB値を求める方法

    Excel(関数orマクロ)でセルを参照して、 そのセルの背景色、文字色それぞれのRGB値(255,255,255 等)を自動取得することは可能でしょうか? 例えば、 A1セルの背景色RGB値をB1セルに。 A1セルの文字色RGB値をC1セルに、というイメージです。 ※バージョンはExcel2007です 宜しくお願い致します。 背景色、文字色のRGB値を求める方法

  • Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり

    Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はありませんか? 例えば、セルに値を代入場合であれば、 Sub test() Dim arr(2, 2) As Integer Dim rg As Range Set rg = Worksheets(1).Range("A1:B2") arr(0, 0) = 1 arr(0, 1) = 0 arr(1, 0) = 0 arr(1, 1) = 1 rg.Value = arr  '<- これと同じように End Sub というように、セルへの値代入を配列を用いて、プロパティ呼出し1回で済ませることが出来ますよね。。 で、セルの色の場合も、同じように、 Sub test2() Dim arr(2, 2) As Long Dim rg As Range Set rg = Worksheets(1).Range("A1:B2") arr(0, 0) = RGB(0, 0, 0) arr(0, 1) = RGB(0, 255, 0) arr(1, 0) = RGB(0, 0, 255) arr(1, 1) = RGB(255, 0, 0) rg.Interior.Color = arr ' <- これをやりたい End Sub など、と書きたいのですが、最後の rg.Interior.Color = arr の所でエラー(型が一致しません)が出ます。 (全セレクトエリアが同カラーで指定だと、 rg.Interior.Color =RGB(0,0,0) などと出来るのですが。。。) オブジェクトの下のプロパティのプロパティを配列で 指定するうまい方法はありませんか? セル毎にループで回すと、Excelサイドが重いので、 時間を要してしますので困っています。 分かる方、是非よろしくお願い致します。

  • エクセル アンケート集計 (除く)関数を教えてください。

    いつもお世話になっております。 以前に http://oshiete1.goo.ne.jp/qa2998923.html この質問をさせていただきアンケート集計をすることができたのですが、今回は複数回答が1~11まであります。 教えていただいた B1:=IF(ISERROR(FIND("1",A1)),0,1) この数式ですと、10、11もカウントされてしまいます。 A列に複数回答の数字が1~11まで一つのセルに入っていて それをセルを11個用意して、B列=1、C列=2というようにわけたい 場合はどのようにしたら良いでしょうか? (例)   A    B   C   D 1 1,2,11  1   2 2 2,10       2 3 3,4,5          3 4 1,5,11  1 5 10,11 宜しくお願い致します。

  • Cでエクセルデータ作れますか?

    ご回答頂いた方には必ずお礼を書かせていただきます。よろしくお願いいたします。 コンマで区切れば簡単にcsvファイルは作れると思うのですが、 特定のセルの背景色を付けるにはどうすればいいでしょうか? (csvでは出来ないであろう事は解ります) とても手入力できないほどのセルの背景色を付けたいのです。 つけるべき、RGB値はそれぞれ0~255の値として外部ファイルにあります。 やりたい事はつまり例えば、 A1に(R,G,B)=(200,189,93)の背景色にする。 これを大量に作る、と言う事です。 補足すべきところがあれば、補足いたします。よろしくお願いいたします。

  • エクセルで入力のあるセル=1にする方法

    エクセル2003を使用してます。 あまり使ったことがないので基本的なことだったらすみません…。 数字入力のあるセルを認識して別のセルに『1』と表示させる方法はありますか? 《例》 (入力するセル)     (表示するセル) A1 1        B1 1 (A1~A5を認識) A2 1        B2 1 (A1のみ認識) A3 2        B3 1 (A2~A5を認識) A4   (入力なし) A5 1 (入力するセル)     (表示するセル) A1 1          B1 1 (A1~A5を認識) A2   (入力なし)  B2 1 (A1のみ認識) A3   (入力なし)  B3   (表示なし)(A2~A5を認識) A4   (入力なし) A5   (入力なし) こんな感じにしたのですが、何かできる手段はありますか?

専門家に質問してみよう