- ベストアンサー
【エクセル】マクロ
すみません。 エクセルのマクロのプログラム教えてください。 セルA1~A30に 「1」~「5」のいずれかの数字が 入っています。 そのA列の数字をもとにB1~B30のセルの書式を 変えたいと思っています。 例えば、「1」なら赤色、「2」なら青色、「3」なら緑色・・・ となるように考えています。 for文で1~30まで繰り返し、if文とswitch文で実行すると 思うのですが、どのようなプログラムを書けばいいですか? よろしくお願いします。 3種類なら条件式書式が使えるのですが、4種類以上だと使えないので マクロで実行しようと思っています。
- shiritai
- お礼率30% (310/1007)
- オフィス系ソフト
- 回答数4
- ありがとう数1
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Selsect Case文でしょうか 後から一括して処理するならこんなマクロでもできます。標準モジュールシートに貼り付けてください。(値が1~4までしか書いていませんけど…) Sub Macro1() Dim idx As Integer For idx = 1 To 30 Select Case Cells(idx, "A").Value Case Is = 1 Cells(idx, "B").Font.ColorIndex = 3 Case Is = 2 Cells(idx, "B").Font.ColorIndex = 5 Case Is = 3 Cells(idx, "B").Font.ColorIndex = 4 Case Is = 4 Cells(idx, "B").Font.ColorIndex = 6 Case Else Cells(idx, "B").Font.ColorIndex = xlAutomatic End Select Next idx End Sub 入力したタイミングで色を変えるなら、以下のマクロをシート名タブ右クリック→コードの表示で開く画面に貼り付けてください Private Sub Worksheet_Change(ByVal Target As Range) Dim trg As Range Set trg = Intersect(Target, Range("A1:A30")) If Not trg Is Nothing Then For Each trg In Target Select Case trg.Value Case Is = 1 trg.Offset(0, 1).Font.ColorIndex = 3 Case Is = 2 trg.Offset(0, 1).Font.ColorIndex = 5 Case Is = 3 trg.Offset(0, 1).Font.ColorIndex = 4 Case Is = 4 trg.Offset(0, 1).Font.ColorIndex = 6 Case Else trg.Offset(0, 1).Font.ColorIndex = xlAutomatic End Select Next trg End If End Sub
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17068)
>セルの書式を変えたいと思// 文字色かセルのパターン色か。 パターーん色ではないかと思って #3のご回答とキホンは同じだが、 Sub test03() d = Range("A65536").End(xlUp).Row C = Array(0, 3, 5, 6, 8, 12, 14) For i = 1 To d Cells(i, "B").Interior.ColorIndex = C(Cells(i, "A")) Next i End Sub このように、対照表をプログラムの中に定義するとコードが簡単。 >if文とswitch文で実行すると 思うのですが、どのようなプログラムを書けばいいですか これにとらわれないこと。Case文でしょう。 VBAではIF文を出来るだけ使わないようにするのが、勉強のコツ。 メソッドなどで、IF文の使用は減らせることが多い。 >3種類なら条件式書式が使えるのですが、4種類以上だと使えないので エクセル2007かどうか質問に書くべき。
- mitarashi
- ベストアンサー率59% (574/965)
対照表を使ってもできます。 Sub test() Dim colorTable As Variant Dim i As Long On Error Resume Next colorTable = Array(0, 3, 5, 4, 6) For i = 1 To 30 Cells(i, 2).Font.ColorIndex = colorTable(Cells(i, 1).Value) Next i End Sub
- dodemoii
- ベストアンサー率59% (769/1282)
関連するQ&A
- エクセルの条件付き書式について
A1セルに「100」が入力された場合、B1セルの色を赤に、同様にして200:青、300:黄、400:緑、500:赤、600:青、700:黄、800:緑という風にB1セルの色を変えたいと思います。 条件付き書式は3つまでしかないのですが、色のパターンは4種類なので、元の書式と合わせると4パターンです。 条件付書式で、A1セルの値が200又は600ならB1セルの色を青にするにはどうすればよろしいでしょうか。 つたない文章でわかりにくいかと思いますが、よろしくご回答ください。
- ベストアンサー
- オフィス系ソフト
- あるマクロが実行できず困っていました。恐らく参照先
あるマクロが実行できず困っていました。恐らく参照先のセルの書式の問題だったのですが、原因がよくわからず。数字が入力してあるセルをダブルクリックして、エンターを押して別のセルに行くと、セルの左上に緑印が付きます。すると、マクロが実行できるようになりました。 緑印がつくと、書式設定が変わったりするのでしょうか?印がつくだけだとと思ってましたが、実行できないマクロが実行できるようになったので、何かが変わったのかと思いました。 質問文がわかり辛いですが、わかる方いたら教えて下さい
- 締切済み
- Excel(エクセル)
- エクセルマクロに詳しい方
すいません教えて下さい。 例えば、A1のセルに30、A2のセルに5 A3のセルに7 といった感じで数字があるとして どこかの列のある位置 を基準として 例えば C列の先頭から A1のセルにある 数字の分だけ色分けるマクロってどのようになるのでしょうか この場合 C1からC30までが黒 C31~35までは緑 といった具合にしたいのです。 A列に入る数字は必ずしも 一定ではありません。 できましたら、 マクロを簡単に書いて頂けると大変うれしいです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル2013のマクロについて。
Excel 2013のシートでセルに2桁の数字を入れていますがセルの書式設定でユーザー定義を"00"として数値が1桁の場合に頭にゼロがつくようにしてあります。このシートでマクロを作成した時、変数Aを"Dim A As Byte"と定義して、「A = "セル"」の式で マクロの実行が止まり、「実行時エラー'13':型が一致しません。」と出て数値として読み込めないようですがどなたか原因と解決方法ご存知の方教えて下さい。
- 締切済み
- Excel(エクセル)
- VBマクロ 条件によってセルの色を変えたいのですが…
いつもこちらで勉強させて頂いております。 Excelで、ある二つの言葉を含むセルに色を付けたいのですが、 言葉の組み合わせが5パターンあり 条件付き書式では足りません。 AとBを含むセル 赤 AとCを含むセル 青 AとDを含むセル 黄 AとEを含むセル 緑 AとFを含むセル 紫 といった様に、条件によってセルの色を変えたいのですが… マクロなどで良い方法はありますでしょうか? どなたかアドバイス宜しくお願い致しますm(__)m
- 締切済み
- Visual Basic
- エクセルのマクロについて教えてください
作業が面倒だし、間違いもよく発生するので、 下の条件のマクロをどなたか教えて頂けませんか? 宜しくお願い致します。 社内のサーバーにエクセルファイル名、AからZまであるとします。 各AからZにそれぞれ同じシート名「集計」があるとします。 そのシート内にデータが色々あるとします。 ある決まったセルだけを削除するのではなく、セルの色だけで判断してデータを削除したいのです。 例えば、赤色のセルになっている部分だけを対象に 入力されている数字を消したいのです(行削除ではなく、単純にデリートです)。 上記をマクロで実行する方法はないでしょうか。 マクロ初心者なので、プログラム言語の下に簡単な説明を頂けると助かります。 どなたか詳しい方がいらっしゃいましたら、宜しくお願い致します。
- ベストアンサー
- Visual Basic
- エクセルマクロの質問です。
エクセルマクロの質問です。 こんにちは マクロを勉強し始めて早速つまずきましたので、ご教授お願いいたします。 IF文で、表示されている値を比較することは可能でしょうか? 例えば A1のセルに2010/12/31といれて、書式設定から表示形式をd"日"とします。 するとA1セルには31日と表示されます。 また、B1セルに31日と直接打ち込んでA1とB1セルを比較させたいと考えています。 このように表示されているものを比較することは可能でしょうか? 可能であればその方法をご教授お願いします。 よろしくお願いいたします。m(_ _)m
- ベストアンサー
- オフィス系ソフト
- マクロ:範囲内のセルを1つずつ編集する
EXCEL2003を使っています。 マクロは全くの初心者です。 VBはVB.NETを少しかじった程度です。 A1:A30に値1、B1:B30に値2が入力されています。 (1)B1の値がA1より大きい場合セルの背景色を青色に変更。 (2)B1の値がA1より小さい場合セルの背景色を赤色に変更。 (1)(2)の動作をB1からB30まで順番に行いたいのです。 条件付書式のやり方は分かります。 ですが条件付書式の場合単独のセルを指定する方法しか分かりません。 範囲内のセル全てに1つずつ条件付書式を適用するマクロを組みたいのです。 どなかた知恵を貸して下さい。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- EXCELでこういうことできますか。
関数と書式設定を使っていいところまではいったのですが、ダメでした。 たとえば、セルA1からA12まで1月~12月を入れます、B1からB12までは成績(適当な数字)が入ります、1番成績の良い月のセルを赤色に塗り、2番目を黄色1番悪い成績の月のセルを青色に塗る。 こんなことできますか、 教えて下さい。
- ベストアンサー
- オフィス系ソフト