• 締切済み

VBA  セルの色づけ

Excel知識が乏しく、質問させていただきます。 まったくの初心者です… セルのA5~A30までの セルごとにそれぞれ色をつけます。 色は、無色または赤です。 セルA5に赤色をつけたときには、同一シート内のセルC10からC13とD10からD12までセルA5と同じ色になるように。 A5が、無色のときには上記同一セルも無色にするようなイメージです。 同様にA6が赤色の時に、E3~E7、F3~F6に赤色がつく。 そんな設定ができるようにするマクロが必要です。 日々変わる色設定を手作業で行うのが困難になってきました…。 方法についで教えていただきたいです。

みんなの回答

  • SI299792
  • ベストアンサー率48% (714/1476)
回答No.5

すみません。マシントラブルで返事できませんでした。 A5 C10~C13、D10~D12 A6 E3~E7、F3~F6 A7 C20~C21、D20~21 A8 E20~24、D23~24 に色を付ける。 規則性がありませんね。すべて上げていただかないと。 1つのアイデアなのですが、 A列に色を付けたいアドレスと色を入れて、マクロを動かす。すると所定の場所にセルと同じ色がつくというのはどうでしょうか。 https://box.yahoo.co.jp/guest/viewer?sid=box-l-bahport3hkq3a2qccdcvb63m3e-1001&uniqid=8c210c44-7db4-4eab-bf39-4ae74dd5672c&viewtype=detail A列に既にデータが入っているなどて使えないのであれば、コメントにする。別シートにするなど、方法はあります。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

>この部分だけでもエラーが出てしまいました…。 どの様なエラーですか? >A7であればC20~C21とD20~21 >A8であればE20~24.D23~24です 以下、条件追加分 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If Intersect(.Cells, Range("A1:A30")) Is Nothing Then Exit Sub Select Case .Address(0, 0) Case "A5" Range("C10:C13,D10:D12").Interior.Color = .Interior.Color Case "A6" Range("E3:E7,F3:F6").Interior.Color = .Interior.Color Case "A7" Range("C20:D21").Interior.Color = .Interior.Color Case "A8" Range("D23:D24,E20:E24").Interior.Color = .Interior.Color End Select End With Cancel = True End Sub

  • SI299792
  • ベストアンサー率48% (714/1476)
回答No.3

ごめんなさい。私の回答は間違いです。質問を読み間違えました。 A7が赤色の場合、A8が…どこに色を付けるのですか?

Kmfrk5557
質問者

補足

回答ありがとうございます! A7であればC20~C21とD20~21 A8であればE20~24.D23~24です。 本当にランダムな位置、セルの形で申し和ないです

  • SI299792
  • ベストアンサー率48% (714/1476)
回答No.2

A7が赤色の時に、G3~G7、H3~H6という風にA30 まで続くのですね。 色はフォントの色でしょうか、塗りつぶしでしょうか。 塗りつぶしで作りました。 色を付けた後実行してください。 ' Option Explicit ' Sub Macro1() '   Dim Row As Long '   For Row = 5 To 30     Cells(1, Row * 2 - 9).Range("C10:C13,D10:D12").Interior.Color _       = Cells(Row, "A").Interior.Color   Next Row End Sub フォントの色の場合。InteriorをFontに変更してください。

Kmfrk5557
質問者

補足

説明不足で申し訳ありません! 色付けをする位置は規則性のない所定のセル範囲になります。 A7であればC20~C21とD20~21。 その他も別な所定のセルに色が入るようにしたいです。 各地域の区ごとの色付けに利用するので、対象の区の地図のようなものを作成しています。 セル範囲に名称をつけるなどして設定した方がいいのでしょうか…

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

セルの色づけ をトリガーにするイベントがないので 色づけ後、当セルをダブルクリックするとマクロが実行します。 以下をシートモジュールに貼り付けてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   With Target     'A1:A30以外をダブルクリックした時はExit     If Intersect(.Cells, Range("A1:A30")) Is Nothing Then Exit Sub     Select Case .Address(0, 0)       Case "A5"         'A5をダブルクリックするとC10:C13とD10:D12までA5と同じ色になる         Range("C10:C13,D10:D12").Interior.Color = .Interior.Color       Case "A6"         'A6をダブルクリックするとE3:E7とF3:F6までA6と同じ色になる         Range("E3:E7,F3:F6").Interior.Color = .Interior.Color     End Select   End With   Cancel = True End Sub

Kmfrk5557
質問者

補足

回答ありがとうございます! Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   With Target この部分だけでもエラーが出てしまいました…。

関連するQ&A

  • セルの色をマクロで判定

    セルの色をマクロで判定したいのですが、知恵をお貸し下さい。 シート1のA1セルからA40と      C1セルからC40と      E1セルからE40セルを確認しセルが黄色だったら シート2のF1セルからF40      H1セルからH40      J1セルからJ40の同じ配列の所(A1だったらF1)のセルを赤色にしたいのですが、どのようなマクロを組むといいのでしょうか、どうか宜しくおねがいします。

  • エクセル 条件にあったセルへの色づけ

    表題の質問をさせていただきます。 利用しているのはエクセル2003です。 以下の在庫管理の表があります。 A列:商品コード B列:商品名 C列:条件 (買取・委託1・委託2・その他) D列:買取 E列:委託1・委託2 F列:その他 1行目は上記項目名になっていて2行目からデータを入力。 商品コードを入力すると別シートにあるデータからVLOOKUPで商品名と条件は自動で入力されます。 そして、在庫数を その条件にあったD列からF列までの該当列に入力しています。(DからFまでには1つしかデータは入りません) 質問させていただきたいのは、条件にあった列のセルに色付けができないかと思っているのです。 例 101 みかん 買取 (セル茶色)(セル無色)(セル無色) 102 りんご 委託1(セル無色)(セル茶色)(セル無色) 103 ぶどう 委託2(セル無色)(セル茶色)(セル無色) 104 すもも 買取 (セル茶色)(セル無色)(セル無色) 現在は目視で該当列に入力しているのですが、実際には もっと条件も多く、またセル幅もせまいので 他の条件欄に入力してしまうミスがでています。 ミスを減らすためにも条件にあったセルを目立たせるように色付けをしたいと思ったのです。 よろしくお願いいたします。

  • VBAで色の付いているセルの行削除

    VBAで色の付いているセルの行を削除することは出来ないでしょうか? 量が多すぎて一つ一つ削除すのは大変で間違えて削除してしまいそうなので・・・ - 文字または数字 ■ 色の付いたセル(赤)  A B C D E F・・・ 1- - - - - - 2- - - - - - 3- - - ■ - - 4- - ■ - - - 5- - ■ - - - 6- - - - - - 7- - - ■ - - 8- - ■ - - - 9- - ■ - - - 10- - - - - -       ↓  A B C D E F・・・ 1- - - - - - 2- - - - - - 6- - - - - - 10- - - - - - よろしくお願いします。

  • エクセルのセルへの色づけ方法について

    現在、エクセルで統計用のデータシートを作っているのですが、あるセルにデータが入力されると、別の列で同じ行のセルの色が変わる、という設定をしたいのです。 たとえば、 B列のセルに数字or分数が入れられた場合はA列同行のセルが黄色 C列のセルに数字or分数が入れられた場合はA列同行のセルが赤色 D列のセルに数字or分数が入れられた場合はA列同行のセルが青色 E列のセルに数字or分数が入れられた場合はA列同行のセルが緑色 表自体はAに入力されているデータで管理されているので、そこから横に派生していく条件によってAのステータスが確認できるようにしたいと思っております。 つまり、B,C,D,E,のいづれかにデータが入力された場合、その列に応じてAの色が変わるという設定です。 色が3色だったら条件つき書式で設定が出来ましたが、四色以上になってくるとIF関数を使い =IF(B1>=1,"S",IF(C1>=1,"O",IF(D1""," ","D")))みたいな式を設定し 更にそのセルを確認して色を変える方法しか思いつかず。。。 ただでさえ非常に横に長いシートなので、不必要に使用する列を増やしたくないのと出来るだけ簡素化した表にしたいと思っております。 どなたかエクセルに詳しい方がいらしたらご教示いただけないでしょうか? 尚、エクセルは2003でOSはVISTAを使用しております。 お手数ですが宜しくお願い致します。

  • VBAで別々の2列のセルに色付け

    WINDOWS XP EXCELL 2003です。 いつもお世話になります。 参照図で A~D と E~H に分けています。 A2 数式が  =IF(B2="","",TEXT(B2,"mm")) E2 数式が  =IF(F2="","",TEXT(F2,"mm")) それぞれには 1(月)から12(月)です。 ※ 数値のみで 月 は含まれません。                      ユーザー定義 mm/dd です。   御指導を仰ぎたいのは A列 と E列 のセルの色づけのマクロを教えていただけませんか。 色コードは後で私が追加します。

  • マクロで色つけ

    EXCEL2000で、条件に合うときセルを塗りつぶすマクロを作りたいので教えて下さい。 A列にはA01やB02など「英数数」の3桁のコードがあります。 A列がDから始まるときにF列G列をグレーに塗りつぶしたいのですが、 元々セルには黄色で配色していて、その後F列G列に入っている数値を確認したあとは、塗りつぶしを消します。 A列がDから始まるとき、F列とG列が、塗りつぶしがなければそのままで、黄色の時はグレーにするマクロを作成するにはどのようにすればよいでしょうか?

  • microsoft excel セルの色

    以下のことをしたいのですがどうすればよいでしょうか。 あるセル(例:F12)の数値が30(%)以下だと、そのセルの含む行の一部(例:A12,B12,C12,D12,E12,F12)が赤色になる。 あるセル(例:F12)の数値が70(%)以上だと、そのセルの含む行の一部(例:A12,B12,C12,D12,E12,F12)が青色になる。 教えてください。お願いします。

  • 複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ

    ブック(1)のシート(1)にある複数の離れたセル(A1,B2,C3,D4:F4)をコピーし、別ブックのシート(1)のセル(E1,F2,G3,B4:F4)へリンク貼り付けを実行するためのマクロを教えてください。 なお、ブック(1)とブック(2)は同一階層に置いてあります。 このブック(1)とブック(2)の表のフォーマットが違っており、ブック(1)のセルA1をコピーして ブック(2)のセルE1へ貼り付けし、 また同様にブック(1)のセルB2をコピーして ブック(2)のセルF2へ貼り付けをしていきます。 (A1→E1、B2→F2、C3→G3、D4:F4→B4:F4 へ貼り付ける) この作業をマクロを使って自動実行させたいと思っています。 御手数お掛け致しますが、何卒よろしくお願いいたします。

  • 二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセル

    二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセルの値を 別のシートに設定するには、どうしたらいいでしょうか? [シート1] --|A---B---C---D---E --+---+---+---+---+--- 01|A1 ??? 02|A2 yyy 03|B1 ??? 04|C1 sss [シート2] --|A---B---C---D---E --+---+---+---+---+--- 01|A1 aaa 02|A3 bbb 03|B0 xxx 04|B1 ccc 05|C1 sss シート1 [Aのセル]とシート2の[Aのセル] を比較し、同じ値だった場合に、 シート2の [B] の値を シート1の[C]に設定するための関数はどのようにしたら良いでしょうか? 最終的に、シート1が --|A---B---C---D---E --+---+---+---+---+--- 01|A1 ??? aaa 02|A2 yyy 03|B1 ??? ccc 04|C1 sss sss となります。 Excelの関数あマクロは、どうしても分からなく質問させてもらいました。 申し訳ありませんが、ご教授宜しくお願い致します。

  • VBA 今日の行にあるセル コピー 別シートへ

    (1)sheet1にボタン button1 があり、そのボタンを押すと、マクロが起動する。 (2)データは sheet2 貼り付け先は sheet3 sheet2 F列に日付が入っています。   F列は、日付(過去~本日まで ※未来の日付はありません)か、空白の場合があります。 F列の日付が本日のとき、 sheet2 A列のセルの値を sheet3 B列へ。  A列には連番。 sheet2 D列のセルの値を sheet3 C列へ。 sheet2 G列のセルの値を sheet3 D列へ。 sheet2 F列のセルの値を sheet3 E列へ。 それぞれ、Sheet3の各行の一番下に貼り付ける形をとりたいのです。 こちらでマクロはどうしたらよいのでしょうか。

専門家に質問してみよう