dポイントプレゼントキャンペーン実施中!

以前も同じような質問をしましたが、
ちがうパターンですので、教えてください。

1行で、Aにボタンを作り、
その行のBからRに色をつけたい。
Aにあるボタンを押すと、透明、グレー、赤、黄色に変わるようにしたいです。

また、色は追加したり、減らすかもしれませんので、
その時の方法も教えてください。

すみませんが、よろしくおねがいします。

質問者からの補足コメント

  • ありがとうございます!

    このままコピぺし、実行したら
    「実行時エラー 13 型が一致しません」
    と出てしまいました。

    そのままコピぺしたらダメでしたか?
    すみません。教えてください。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/06/08 15:49

A 回答 (5件)

こんばんは、


すでに回答が出ておりますので、アドバイスだけ横から失礼します。
>「実行時エラー 13 型が一致しません」
おそらく、Option Explicit で宣言を強制されていると思います。
String型などで宣言されていませんか?

#4さんのコードをお借りして恐縮ですが、、
    gyo は  Integer もしくは、Long もちろん Variant でもOKです。
    iro  も Variant Integer もしくは、Long この場合、同様です。

また、上記エラーではないですが、ActiveXのCommandButtonで実行する場合は、gyoの抽出方法が変わりますので
フォームボタンから実行するようにします。
    • good
    • 0

以前も同じような質問をした、ということでしたので、初歩的なところは知っているかなと思って回答してしまいました。


改めて・・・

A1セルの中にボタンを置きます。 (「開発」タブ➙「コントロール」グループ➙挿入から)

ボタンを右クリック➙マクロの登録
とすると
マクロ名「ボタン1Click」と表示されているので、そのまま「新規登録」ボタンを押します。

下のような記述のある窓が開きます

--------
Sub ボタン1_Click()

End Sub
--------

この真ん中の空行に、No.1で回答したものの、中身だけコピペします。
すると、こんなふうになりますよねd。

--------
Sub ボタン1_Click()
    gyo = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
    iro = Range("B" & gyo).Interior.ColorIndex
    Select Case iro
        Case -4142
            Range("B" & gyo & ":R" & gyo).Interior.ColorIndex = 16
        Case 16
            Range("B" & gyo & ":R" & gyo).Interior.ColorIndex = 3
        Case 3
            Range("B" & gyo & ":R" & gyo).Interior.ColorIndex = 6
        Case 6
            Range("B" & gyo & ":R" & gyo).Interior.ColorIndex = -4142
    End Select
End Sub
--------

エクセルの表にもどって、A1セルに置いたボタンをクリックして下さい。

これで動作すると思いますが、いかがでしょうか?
    • good
    • 1

こんにちは!



横からお邪魔します。
>1行で、Aにボタンを作り
とありますが、各行にボタンを配置しているのでしょうかね?

お望みの方法とは異なりますが、A列セルをダブルクリックする方法ではダメですか?

一例です。
シートモジュールにしてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Column = 1 Then
  Cancel = True
   With Target.Offset(, 1).Resize(, 17).Interior
    Select Case Target.Offset(, 1).Interior.ColorIndex
     Case xlNone
      .ColorIndex = 16
     Case 16
      .ColorIndex = 3
     Case Is = 3
      .ColorIndex = 6
     Case Else
      .ColorIndex = xlNone
    End Select
   End With
 End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

#1のzongaiさんのマクロ、しっかり作動しますよ。



>A列にボタンを設置し、そのボタンに以下のマクロを登録する。
ボタンにマクロを登録しましたか?
    • good
    • 0

A列にボタンを設置し、そのボタンに以下のマクロを登録する。



クリックした時に、そのボタンのある行を取得。
そのその行の色を取得。
その色が…
  透明(-4142)ならグレー(16)へ
  グレー(16)なら赤(3)へ
  赤(3)なら黄色(6)へ
  黄色(6)なら透明(-4142)へ
…と変更

そんな動作です。
色の追加(切替方法)は、
  Case の数字なら、次の行の色へ
という感じになっているので、見ればわかると思います。

Sub BRpaint()
    gyo = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
    iro = Range("B" & gyo).Interior.ColorIndex
    Select Case iro
        Case -4142
            Range("B" & gyo & ":R" & gyo).Interior.ColorIndex = 16
        Case 16
            Range("B" & gyo & ":R" & gyo).Interior.ColorIndex = 3
        Case 3
            Range("B" & gyo & ":R" & gyo).Interior.ColorIndex = 6
        Case 6
            Range("B" & gyo & ":R" & gyo).Interior.ColorIndex = -4142
    End Select
End Sub


色の指定方法もいろいろあるけど、
数字との対比はこちらを参照してみて下さい。

Colorプロパティの設定値一覧|VBA技術解説
https://excel-ubara.com/excelvba4/EXCEL285.html
この回答への補足あり
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!