• ベストアンサー

Excelシート上のボタンでセルの背景色を設定する

シート上のボタンを押したときにセルの値と背景色を設定したいのですが、エラーになります。 原因・解決策が分かる方お願いいたします。 Private Sub CommandButton1_Click() With Range("A1") .Value = "Yellow" .Interior.ColorIndex = 6 '実行時エラー1004:InteriorクラスのColorIndexプロパティを設定できません。 End With End Sub 環境 Excel97/Win98

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

  • ベストアンサー
  • estima01
  • ベストアンサー率27% (43/155)
回答No.1

マクロの登録で作成されればいちばん簡単に解決すると思います。 一度お試し下さい。

todo36
質問者

お礼

なるほど! Setlectすればうまく行きます。 Private Sub CommandButton1_Click() Range("A1").Select Selection.Interior.ColorIndex = 6 End Sub しかし、処理速度を上げるためSelectは使いたくないです。

todo36
質問者

補足

ありがとうございます イベント処理の先頭にActiveCell.Selectを入れる事により解決しました Private Sub CommandButton1_Click() ActiveCell.Select Range("A1").Interior.ColorIndex = 6 Range("A2").Interior.ColorIndex = 5 Range("A3").Interior.ColorIndex = 4 End Sub

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#2に解答をいれた者です。一応判りました。 Private Sub CommandButton1_Click() ' Sheet1.CommandButton1.ForeColor = vbYellow ' MsgBox ActiveCell.Font.ColorIndex ' Sheet1.CommandButton1.ForeColor = RGB(1, 250, 250) ' Sheet1.CommandButton1.BackColor = ActiveCell.Font.Color '-----色 Sheet1.CommandButton1.BackColor = ActiveCell.Interior.Color 'Sheet1.CommandButton1.BackColor = RGB(1, 1, 255) 'Sheet1.CommandButton1.BackColor = vbYellow '------値 Sheet1.CommandButton1.Caption = ActiveCell.Value End Sub 「ActiveCell.Interior.Color」でRGB値に相当するものが採れるようです。「Color」プロパティを最近 使っていなくて忘れていました。(1)字の文字の色( Font.Color)に合わす場合(2)背景色(Interior.Color) に合わす場合とも上記のコメント記号(’)を適当に外してもらえば対処できると思います。 ボタン側は、文字がForeColorで、文字色がBackColor とややこしいです。よろしく。

todo36
質問者

お礼

ありがとうございます。 Colorプロパティは初めて知りました。 可読性でいえば、ColorIndexよりいいですね。 Private Sub CommandButton1_Click() ActiveCell.Select Range("A1").Interior.Color = vbYellow Range("A2").Interior.Color = vbBlue Range("A3").Interior.Color = vbGreen End Sub

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

中間報告みたいになりますが、済みません。 Private Sub CommandButton1_Click() ' Sheet1.CommandButton1.ForeColor = vbYellow ' MsgBox ActiveCell.Font.ColorIndex ' Sheet1.CommandButton1.ForeColor = RGB(1, 250, 250) Sheet1.CommandButton1.BackColor = RGB(1, 255, 255) Sheet1.CommandButton1.Caption = ActiveCell.Value End Sub 上記でボタンのCaptionにセルの値をセットするのは上手く行きます。 しかしCommandButton1のForecolorか、BackColorにColorIndex値をセット(=右辺)すると上手く行かない。vbYellowやRGB値をセットすれば上手く行く。 理由不明。ColorIndexからRBG値に変換する関数があれば、セルの色コードをRGB値で取ることができれば、凌げるのですが小生判らず。

todo36
質問者

お礼

すいません。 セルの背景色を設定したかったのです。 回答1のおかげで解決策は分かりました。(原因は不明ですが) >ColorIndexからRBG値に変換する関数があれば、 ブックのColorsプロパティです。 debug.print hex(activeworkbook.colors(6)), hex(vbyellow)

関連するQ&A