• ベストアンサー

excelのセルの色を変える

excel2000でsheet1にある列のうち たとえば sheet1のセルA1の値が「Z-1」だったら sheet2のセルB1を赤に塗りつぶす ってことはマクロでできますか? できなければVBAでどのようなコードになるのか教えていただけませんでしょうか?

  • Hugh
  • お礼率48% (45/92)

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

  • ベストアンサー
  • moon00
  • ベストアンサー率44% (315/712)
回答No.7

うーん、何かやりたいことがよく分からなくなってきたのですが。 要点を整理すると、 ・Sheet1のある範囲に値が入っている ・その範囲内に特定の値があればSheet2のB1セルに色を付けたい ・B1セルには何か表示したい文字が入っている ということでしょうか? それなら、下の条件付き書式をこう変更して下さい。 A2セルを追加で使用します。 Sheet2で 1.A1に探したい値を入れる 2.「A2」に以下の式を書く =COUNTIF(Sheet1!J2:J20,A1)  A1の内容と一致するセルをSheet1のJ2:J20から探し、その数をカウントします。 3.セルB1で条件付き書式  条件1 数式が=A2>0、塗りつぶし赤 こうすればB1のセルには自由に書き込めます。 余談ですが、参照範囲が同じシートにあれば、 条件付き書式にA2セルの内容をそのまま書き込むことで可能です。

Hugh
質問者

お礼

おかげさまで私のやりたいことが完璧にできました。 どうもありがとうございました。 大変感謝いたします。 本当にありがとうございました

その他の回答 (6)

  • moon00
  • ベストアンサー率44% (315/712)
回答No.6

基本的なことなんですけど、(これだけマクロ書いてて言うのもなんですが) マクロでする必要がある作業ですか? 他の回答でも書かれていますが、条件付き書式でクリアできそうな気もします。 下のマクロでも探したい値を別のセルに入れましたが、 それができるなら条件付き書式でも可能です。 Sheet2で 1.A1に探したい値を入れる 2.B1に以下の式を書く =COUNTIF(Sheet1!J2:J20,A1)  A1の内容と一致するセルをSheet1のJ2:J20から探し、その数をカウントします。  つまり一致するセルがあれば数式の答えは1以上、なければ0です。 3.条件付き書式で  条件1 セルの値が次の値に等しくない =1、フォント赤、塗りつぶし赤  条件2 セルの値が次の値に等しい =0 フォント白(見えなくする) これでどうですか? この方が範囲の変更は簡単ですよ。

Hugh
質問者

補足

ありがとうございました。 教えていただいた方法でできましたが、色を塗りつぶすセルには値がはいっていたのが消えてしまいますよね? これってテキストボックスとかを貼り付けないと値は入力できないですか? 要するにセルの色を変えるセルに文字を入れてある状態で色だけをかえたいのです。そして一致しなくなれば自動的にセルの色をなしにしたいのです。

  • moon00
  • ベストアンサー率44% (315/712)
回答No.5

補足読みました。 その前に、前の回答で書いたコードで最後に「END SUB」が抜けてましたね。 すいません。 まず全角の「Z-1」としたいということですが、 「"」(ダブルクオーテーション)でくくった中なら、全角で入るはずです。 "Z-1"となっているか、確認して下さい。 それと、比較する値の入る場所がA1固定ではなく、J2:J20ということですが、 この場合は、J2からJ20までの値を1回ずつ取り出して比較することになりますので、 ちょっと変わります。 Sub Macro2() Dim Naiyo As String Dim Hikaku As String Dim i As Integer Dim j As Integer Hikaku = Range("A1") 'セルA1の内容を取得 j = 0 For i = 2 To 20 '繰り返し処理 範囲はJ2:J20 Sheets("Sheet1").Select 'Sheet1をアクティブに Naiyo = Cells(i, 10) 'セルJ2の内容を取得 Jは10列目 If Naiyo = Hikaku Then 'セル内容を判定 j = j + 1 'セル内容が一致するセル数をカウント End If Next If j > 0 Then 'セル内容が一致するセルがある場合 Sheets("Sheet2").Select 'Sheet2をアクティブに Range("B1").Select '塗りつぶすセルを選択 With Selection.Interior .ColorIndex = 3 '一致していたら赤く塗る End With Else Range("B1").Select With Selection.Interior .ColorIndex = xlNone '一致していなければ塗りつぶしなし End With End If End Sub 比較する値が流動的ということなので、探したい値をSheet1のA1セルに入れる ことにしています。 探したい値に何か規則があれば、それを利用することができるかもしれません。 これでやりたい方向は合ってますかね? 実は私もマクロ最近やり始めたところなんで、コードきれいじゃなくてすいません。

  • mam_00
  • ベストアンサー率50% (5/10)
回答No.4

こんばんは。mixjuice様のおっしゃるとおり、「書式」から「条件付書式」がもっとも簡単だと思います。いくつか制約はありますが。 sheet2のセルB1に =Sheet1!A1 として、セルB1にA1の値と等しくなるようにします。 sheet2のセルB1を選択し、「書式」から「条件付書式」をクリックします。 条件に、 「セルの値が」 「次の値に等しい」 「="Z-1"」 とします。 [書式]ボタンをクリックして、[パターン]タブ内の色を 赤 など任意の色にします。 そうすると、Sheet1のA1が Z-1 の値の時は、Sheet2の B1 セルが真っ赤になります。

  • mixjuice
  • ベストアンサー率14% (8/54)
回答No.3

メニューバーの「ツール」から「条件付書式」ではどうでしょう。

  • moon00
  • ベストアンサー率44% (315/712)
回答No.2

あんまりきれいなコードではありませんが。 Sub Macro1() Dim Naiyo As String Sheets("Sheet1").Select 'Sheet1をアクティブに Naiyo = Range("A1") 'セルA1の内容を取得 Sheets("Sheet2").Select 'Sheet2をアクティブに If Naiyo = "Z-1" Then 'Sheet1のセル内容を判定  Range("b1").Select With Selection.Interior .ColorIndex = 3 '一致していたら赤く塗る End With Else  Range("B1").Select With Selection.Interior .ColorIndex = xlNone '一致していなければ塗りつぶしなし End With End If このような感じでしょうか。 このマクロを実行するとお望みの作業ができると思います。 条件付き書式でも工夫すればできると思います。 条件に他シートからの参照は出来ませんが sheet2のB1セルに「=sheet1!A1」としておいて 条件1 セルの値が次の値に等しい ="Z-1"、フォント赤、塗りつぶし赤 条件2 セルの値が次の値に等しくない ="Z-1" フォント白(見えなくする) 少しはお役に立てましたか?

Hugh
質問者

補足

ありがとうございました。少し状況が変わってしまいました。Z-1の値が特定のセルではなく、J2:J120の間にZ-1とかA-1とかC-1とか値もセルも流動的な場合は(”A-1")のところをrange("J2:J120")にすればいいのでしょうか? またsheet1にあるセルの値も全角の「Z-1」なのですが、コードを書く時に自動的に半角になってしまいます。 どうすれば全角として認識されるのでしょうか? 入れ違いになって申し訳ありませんが宜しくお願い致します。

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.1

質問の例の回答なら、以下のとおりで可能。 Sub TEST()   If ActiveWorkbook.Sheets("Sheet1").Range("A1") = "Z-1" Then     Sheets("Sheet2").Select     Range("B1").Select     With Selection.Interior       .ColorIndex = 3       .Pattern = xlSolid     End With   End If End Sub

関連するQ&A

  • Excel2010 セルのフォントの色

    Excel2010で、任意のセルのフォントの色が「赤」だったら、その列の空のセルに「赤」等のフラグを立てて、条件付きで列に色を付けたい。 VBA等マクロは使えません。 なんとか関数で対応したいと思っています。 ご教示方、よろしくおねがいします。

  • Excelを2つ起動してセルを参照する方法

    ご質問させていただきます。 Excel2007を2つ起動して、他方のシートのセルを参照したいのです。 具体的に説明いたしますと、1つ目のExcel2007をExcel(1)と呼び、2つ目のExcel2007をExcel(2)と呼ぶことにします。Excel(2)のsheet1のA1セル~A48セルまでcalculateイベントでリアルタイムに変化する値が入っています。それらの値をExcel(1)のsheet2のB1セル~B48セルで参照したいのです。 できるのでしょうか? どなたか教えていただけないでしょうか? よろしくお願いいたします。 もしVBAを使わなくてもできるようでしたら、そちらの方法も教えてください。 よろしくお願いいたします。

  • マクロ セルの色を含むシート間のコピー貼り付け

    このようなことが、できるでしようか。お教え下さいませんか。 シート1のB2~P列の最終行を取得してコピー、シート2のA2のO列の間に貼り付けたい。 但し、シート1は関数処理していて、シート2には値だけを貼り付けたい時のマクロはどのようなコードにすればよいでしょうか。 また、罫線はそののままコピーして貼り付けたい。 更に、シート1のB2からB列の最終行までは、黄色のセルになっているので、それもシート2のA2~A列の最終行まで貼り付けることってできますか。 お教え頂けますでしょうか。よろしくお願いします。

  • Excel2002 条件によりセルの文字色を変える

    Excel2002について質問させていただきます。 たとえば2つのシートがあります。・・・  Sheet1         Sheet2 A列  B列      A列   B列   商品 在庫      商品  在庫    A   ●       A    1    B   ●       B    2     C   ●       C    1 Sheet1のB列在庫の文字色を、Sheet2のB列在庫の値により色を変えたいのですが、1は青、2は赤 のように・・。 希望としてはマクロで行いたいのですが、可能でしょうか? よろしくお願いいたします。

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • 隣のセルで書式を変える VBA

    通常の書式でのやり方ではわかりませんでした。マクロでなければできませんでしょうか? A列に値が入っていて、B列に値が入っていない場合にセル色とフォントを変更したいのです。 例えば、以下の感じです。 ・A6には値が入っていて、B6には入っていない場合にB6がセル色が赤でフォントが白 ・A7には値が入っていないくて、B7には入っていない場合は変化なし ※同じシートには他に、private sub でダブルクリックすると変化させるマクロが入っています。

  • ACCESS VBAでEXCELのセルの値操作

    ACCESS2007のVBAでEXCEL2007のファイルを開き、 シート数を数え、3シート以降のA1セルの値をB1セルに移動するには どのようなきじゅつをすればいいでしょうか。 ご教授お願い致します。

  • エクセルのマクロについて教えてください

    エクセルで、その行の中に赤色のセルがある場合は、その行のA列のセルに"○"を入れるというのは、マクロで書く場合はどのように書けばよいでしょうか。 行は1~100まで、列はA~Zまであります。赤色のセルはB列~Z列の所々に点在します。

  • エクセルVBA セルを参照した文字検索

    どなたか教えてください。 ブックAのシート1の“A1”の値が、ブックBのシート1のA列に完全一致であるかどうかを検索し、あればそのセルをアクティブ、なければメッセージを返すという処理をVBAで行いたいです。 Findメソッドを使うのかなというのは、なんとなくわかるのですが、検索値が毎回異なり直接検索値をコードに記入できないこと、異なるブックで検索することなどにより、コードの記載方法がわかりません。 どなたか、わかる方お教えください。

  • エクセル セル内の合計値に応じてセルの色を変えたい

         A      B        1    2    りんご2 2    4    りんご1,メロン3 3    3    メロン1,みかん1 上記のように,A列セルには数字が入っていて,B列セルには文字列と数字が入っています。 A1セルの値と,B1の文字列に含まれている数字は合致しているので,セルの色はそのままです。A2セルの値とB2の文字列に含まれている数字の合計が合致しているので,ここもセルの色はそのままです。しかし,A3セルとB3の文字列に含まれている数字の合計は合致していないので,B3セルに色を付けたいのです。 B列のセルは,1つのセル内に文字列と数字を入力することを前提に考えていますが,こうしたことは可能でしょうか?可能であれば教えていただけたら幸いです。

専門家に質問してみよう