【VBA】指定した範囲の色付け 添付しました画像のような表に色を付けたいです。
【VBA】指定した範囲の色付け 添付しました画像のような表に色を付けたいです。 今までは条件付き書式で行っていたのですが、設定した数が200弱ととても多いので改善したく、今回質問をさせていただきました。 ただVBAに関して全くの無知で、ネットで該当しそうな式をコピペして範囲指定等をいじったりしてみたのですがエラーの連続で…。 ■□やりたいこと■□ L5:FJ5…関数で日付(年月日)を入れてあります。 (ユーザー定義で日だけ表記されるようになっています。) 色を付けたい範囲① F6:K223 色を付けたい範囲② L6:FJ223(※1列置きに色付け) <色付け①> C・D列にあるカラーコードを①に適応したい。 G6:K7の範囲だったらセル背景『CCBEDE』フォントカラー『000000』 G8:K9の範囲だったらセル背景『3D8A57』フォントカラー『FFFFFF』 ※画像では『#』が入っていますが実際には入っておりません。 <色付け②> 開始~完了(J・K列)の期間をC列にあるカラーコードで1列置きに色を付けたい。 (画像はF6:FJ223までの1列置きに関数を入れており、期間内に該当するセルにはC列のカラーコードを表示させています。可能でしたらこの関数も必要とせずに色を付けられると嬉しいですが絶対ではないです。) ■□VBA ①マクロ実行時エラー■□ Sub カラー設定1() Dim i As Long For i = 6 To 223 Range(Cells(i, 7), Cells(i, 11)).Interior.Color = "&H" & Cells(i, 3).Value Next End Sub Sub カラー設定2() Dim i As Long For i = 6 To 223 Range(Cells(i, 7), Cells(i, 11)).Font.Color = "&H" & Cells(i, 4).Value Next End Sub コードを入力して実行した時『実行時エラー13 型が一致しません。』とエラーが出ますが、ちゃんと色が設定されます。何故でしょうか。 コードは以下からコピーしました。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10202496575 ■□■□■□ VBAに関して右も左もわからない若輩者ですが、ご教示いただけたら幸いです。 何卒よろしくお願いいたします。
Excel・346閲覧
ベストアンサー
① 型が不一致なのは、単純に223行目までループしてるからですね。 何行目までデータがあるか分かりませんが、データが無い(カラーコードが無い)行まで来た時に「&H(null)」となっているため、そんなカラーコードは存在しないがためにエラーになってます。 i のループ終了を入力されている最終行までにしてあげましょう。 For i = 6 To Cells(Rows.Count, 3).End(xlUp).Row ② 1列おき?1行おきではなくて? 6行目、8行目、10行目・・・と、上の行に設定すればよいということでしょうか? Sub カラー設定3() Dim i As Long Dim St As Date, Ed As Date Dim StC As Long, EdC As Long For i = 6 To Cells(Rows.Count, 3).End(xlUp).Row - 1 Step 2 St = Cells(i, 10) If St <= Range("L5") Then St = Range("L5") Ed = Cells(i, 11) If Ed >= Range("FJ5") Then Ed = Range("FJ5") StC = Range("L5:FJ5").Find(St).Column EdC = Range("L5:FJ5").Find(Ed).Column Range(Cells(i, StC), Cells(i, EdC)).Interior.Color = "&H" & Cells(i, 3) Next End Sub
1人がナイス!しています
ご対応いただき、誠にありがとうございます! そして1『行』置きの間違いでした、お気づき頂き感謝です! ■□■□ C6:C223 / D6:D223 … 背景 / フォントカラー L5:FJ5 … 日付欄 ■□■□ 上記は関数が入っており、空白はすべて『""』となっております。 そのせいでしょうか、コードを貼り付けさせていただいた時『実行時エラー91』が発生致しました。 (""は空白とみなされず『End(xlUp).Row』で拾ってしまうため?) カラー設定1・2にもエラーが出たのですが、こちらはIfを使ってなんとかなりました。 しかしカラー設定3はどうにもならず StC = Range("L5:FJ5").Find(St).Column 上記の位置でステップインを実行し、エラー91が出ました。 大変申し訳ないのですが、再度力をお貸ししていただけたら幸いです…!
質問者からのお礼コメント
お二方、親切に回答していただき誠にありがとうございました。 ベストアンサーは最初に回答していただいたaxdさんにさせていただきたく存じます。 kkyさんも本当にありがとうございました! まだまだVBAを始めたばかりの素人なので、まずはお二方のコードを読み解くところから始めていけたらと思います。 貴重なお時間を割いていただき、重ねて御礼申し上げます。 本当にありがとうございました!
お礼日時:5/24 16:21