• 締切済み

条件付き書式4つ以上のVBAについて教えてください。

fumufumu_2006の回答

回答No.4

>このプログラムは組めたのですが、No.3の回答を試したのですが、 >うまくいきません どううまくいかないかわからないと、何とも言えないのですが・・・ 「データ」というシートのモジュール部に Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "データシートのデータ変更" Select Case Target.Column Case 1, 6, 8, 10, 11, 18, 20 MsgBox Target.Address & "が変更されました" Sheets("Sheet1").Worksheet_Change Cells(Target.Row, 1) End Select End Sub をコピーしてください。 データシートのどれかを変更すると、 「データシートのデータ変更」 と表示するはずです。 表示しない場合は、プログラムの場所がおかしいか、マクロが実行できない状態ではないかと思います。 データシートのA,F,H,J,K,R,T列が変更されたら、 「$a$1が変更されました」 とか表示されるはずです。 その後エラーで止まるようなら、手動で動くようになって、A-H列を計算式に戻したシートの名前が間違っていると思います。 表示はされるのだけど、正しくならない場合は、データの日付の部分の書式が「日付」または「標準」になっていない(「文字列」とかになっていないか) などで試してください。 うまくいかない場合は、どううまくいかないかを教えてください。 >この貼り付けの作業行った後、このマクロが動作するようにしたいのですが、やはり初心者には難しいのでしょうか? 思った通りにいかない場合の対処などは慣れの部分もあるので、ある程度の苦労は必要だと思います。 ただ、あまり苦労せずに経験値を上げるためには、効率よく質問(「うまくいかない」ではなく「こうこうなって、うまくいかない」)して欲しいです。 p.s. 完全独学のため、昔はとても苦労しました(苦労は今でもですが)。 インターネットの無い頃は、書籍だけがたよりですが、地方では種類も少ないし、価格も高かった・・・ 今はかなり楽なんですよ(と、年寄りくさい)。

yuumi2000
質問者

補足

お返事ありがとうございます。 具体的に言いますと >「$a$1が変更されました」とか表示されるはずです。 ここまではうまくいくのですが、 実際にSheet1を開くとデータ(A-H、実際はB-O)は計算式どおりにちゃんと表示されているのですが、セルの色が全く変わっていません。 コードの記入場所ですが、「標準モジュール」は使用していません。各々のコード表示の場所に記入しています。 下記に実際の表記を書きます。 実際はB-O列(7区間14個の場合、A列には番号が入っています)、データの開始行は7行目で使用しています。 (カレンダの日付は5行目に入力しています) P.S.本当にお早い回答助かっています。 まだまだVBAの初歩的なことからわからないのにこのような質問に対して回答いただいてありがとうございます。 Public Sub Worksheet_Change(ByVal Target As Range) Dim c1 As Variant Dim c2 As Variant If Target.Column <= 15 Then 'B-O列の場合 '現在の設定クリア 'Range(Cells(Target.Row, 9), Cells(Target.Row, Cells(1, Columns.Count).End(xlToLeft).Column)).Interior.ColorIndex = xlNone '本当はこれが正しいんだろうけど複雑なので Rows(Target.Row).Interior.ColorIndex = xlColorIndexNone '変更された行の背景色をクリア 'B-C区間 c1 = Application.Match(Cells(Target.Row, 2), Rows(5), 0) '変更された行のA列の値を5行目から探す c2 = Application.Match(Cells(Target.Row, 3), Rows(5), 0) '変更された行のB列の値を5行目から探す If (Not IsError(c1)) And (Not IsError(c2)) Then If (c1 <= c2) Then Range(Cells(Target.Row, c1), Cells(Target.Row, c2)).Interior.ColorIndex = 3 '赤 End If End If 'D-E区間 c1 = Application.Match(Cells(Target.Row, 4), Rows(5), 0) '変更された行のC列の値を5行目から探す c2 = Application.Match(Cells(Target.Row, 5), Rows(5), 0) '変更された行のD列の値を5行目から探す If (Not IsError(c1)) And (Not IsError(c2)) Then If (c1 <= c2) Then Range(Cells(Target.Row, c1), Cells(Target.Row, c2)).Interior.ColorIndex = 4 '黄緑 End If End If …以下省略 'F-G区間(省略します。) 'H-I区間(省略します。) 'J-K区間(省略します。) 'L-M区間(省略します。) 'N-O区間(省略します。) End If End If End If End Sub

関連するQ&A

  • 条件付き書式について

    条件付き書式について A   B      C 件数 売上商品名  売上日 0   リンゴ    1/1 4   リンゴ 1/2 3   リンゴ 1/3 0   リンゴ 1/4 上記のような表をエクセル2003で作成しました。 A列の3行目と6行目の0件は誤入力です。 そこで質問なのですが、Bにリンゴの入力があり、かつ、 A列に0が入っていれば、セルを黄色にする条件付き書式 設定をしたいのですが、やり方がよくわかりませんでした。 教えてください。 あと、できればVBAで出来る方法も教えていただければ幸いです。

  • エクセルの条件付き書式設定について教えてください

    エクセルの条件付き書式設定について教えてください エクセルで工程表を作成しているのですが、条件付き書式設定で悩んでいます。 開始日と終了日に日付を入れるとその間はセルの色が黒に変わるように設定しているのですが、更に作業内容の項目のFIXという項目の開始日と終了日を入力したときだけセルの色を赤に変わるように設定したいです。 <例>                      7/1 7/2 7/3 A        B(開始日)   C(終了日) キックオフ   7月2日     7月2日 制作      7月8日     7月18日 FIX       7月20日    7月20日 色々と関数を使って試してみたのですが、どうしてもうまくできません。 ちなみにEXCELは2007です。 お手数ですが、ご教授お願いします。

  • VBAの条件付き書式の書き方

    VBA初心者です。 同じような質問が出ていますが、ドンピシャなのがなく助けて下さい。 エクセルで会社のスケジュールを作成中です。     A          B     ・・・ 1 =(sheet2!a1)   =$a$1 2    〃       =$b$1 3 4 という内容でa1から下のセルには日付が1,2,3と入っていて、 1ヵ月の予定で土日祝日と会議デーに色を付けたいのです。 予め、条件付き書式で、土日祝日は青、会議1が緑、会議2がオレンジまでは 指定したのですが、もう1回会議があり、セルの条件付き書式だと3つまでしか指定できなく、VBAで指定するしかなさそうで困ってます。 なお、会議は別シート(Sheet3)に、計算式で、例えば4月の第2週の金曜日を返すように設定したセルがあり、a1:a31の範囲で、そこを参照して指定した色を返すという方法にしたいのです。 別シートに入力されている会議3には"会議3"と名前を付けてあります。 文字列を参照して返す方法はたくさん質問で出ていたのですが、VBA初心者のため、どこをどういじったらいいのか、全く分かりません。 知恵をお貸し下さい!!

  • 条件付書式のVBA

    条件付書式のVBAについて質問させてください。 A1:A100に「晴れ」「曇り」「雨」「台風」「不明」と入力するとします、するとその行のいくつかセルに色をつけたいです。 たとえば、A1に「晴れ」と入力されたらB1、C1、(D1とばして)E1、F1・・・に色がつく。 できればVBAの式を教えていただけると大変助かります。 どうぞよろしくお願いいたします。

  • エクセルの条件付き書式設定について教えてください

    エクセルの条件付き書式設定について教えてください エクセルで工程表を作成しているのですが、条件付き書式設定で悩んでいます。 以前、こちらで相談させていただいてほとんど問題は解決して作成し終わったのですが・・・ さらに追加で注文をつけられてしまい悩んでいます。 今回の質問は、以前の「開始日と終了日に日付を入れるとその間はセルの色が黒に変わるように設定しているのですが、更に作業内容の項目のFIXという項目の開始日と終了日を入力したときだけセルの色を赤に変わるように設定したいです」に加えて、FIXという文字の前後にも何か文字がはいっている場合でも赤に変わるように設定したいです。 <例>                      7/1 7/2 7/3 A        B(開始日)   C(終了日) キックオフ   7月2日     7月2日 制作      7月8日     7月18日 Flash制作FIX  7月20日    7月20日 FIXの前後に*をつけてFIXを含むみたいにしてみたりもしたのですが、どうもうまくセルの色が赤に変わりません。 最終的には、「もし、A列にFIXという文字が含まれているのなら(FIXのみでも可)、B列とC列に日付を入れたらカレンダーのその日のセルが赤に変わる」というふうにしたいです。 お手数ですが、ご教授お願いします。

  • excelの条件つき書式で

    こんにちは!excel97使用です。 条件つき書式のことなんですが、例えば、   A  B 1 200 100 2 150 160 3  50 100 というデータで、B列のセルの値がA列の同じ行のセルの値より少ないとき、Bの文字色を変えたい、という場合、設定はどうすればいいのでしょうか? 例の場合、1行目のB列100だけ色が変わればいいんですが、1行目のBのセルの設定を2行目以下にコピペすると、全部が1行目のAの値に対して反応してしまいますよね?(わたしだけ???) 1個1個設定すればできるんですが、メンドウなので^^;、一気に条件付けする方法を知りたいです。 宜しくお願いします。

  • EXCEL2003 条件付書式が狂ってくる

    条件付書式は、見ためにどのセルに入っているのかわからないというのと、複数の条件付書式が入ると、なぜかその前に決めていた条件付書式が消えてしまっているということがあって、なかなか不便に思っています。(やりかたが悪いのかもと思うのですが) それで、VBAの entireculumn というのを見つけたのですが、 これで対応できるでしょうか? やりたい事は、 1 2*--------------------------- 3*--------------------------- 4 5 6*--------------------------- 7*--------------------------- 上記のように、「*」をつけた行にだけ、行全体に色をつけておく、 というのを条件付書式で、 「数式が」「=$A1="*"」 としたもので、その設定をしているシートに、横にずっと、いろんな関数を入れていってます。 ですが、関数を入れたり、そのプロセスで列挿入などすると、 色がずれてしまうのです。 その回避策として、VBAで最初に色の設定をしておけないでしょうか? 「*がある行だけに色をつける。」 よろしくお願いします。

  • マクロ 列ごとの条件付き書式

    マクロで列ごとの条件付き書式を作成したいです 条件としては ・列ごとに上限値が1行目に下限値が2行目に入力されている ・3行目以降に測定値が入力される ・その3行目位以降の測定値のセルの書式を上下限値から外れた値は色を変えたい ・50列ほどデータがある (例) A1 10 A2 5 A3~A100 数字 条件をA3~A100に設定 A1(10)より大きいもの、A2(5)より小さいものはセルの色を黄色 B1 15 B2 7  B3~B100 数字 条件をB3~B100に設定 B1(15)より大きいもの、B2(7)より小さいものはセルの色を黄色 こんな感じで列ごとにデータと規格値が入っているものが50列あります。 どうかよろしくお願い致します。

  • 条件付き書式について

    先程質問をさせていただいたのですが問題が発生したため再度質問しました。 条件付き書式の件で下記のような表があるとき(簡素化しています)についてですが 1)B1がマイナスの時A1に色がつく 2)B2がマイナスの時A2に色がつく 3)B3がマイナスの時A3に色がつく・・・・ のように行ごとに条件付き書式を設定したいのですが 1行づつ設定していかないとできないのでしょうか? 行数が100行以上ある為、効率が悪いです。 また、1行条件付き書式を設定して(コピー→形式を選択して貼り付け→書式) 次の行に貼り付けましたが上記1)を元にした場合B2にA2を関連付たいのですが コピーした場合、A1のままになってしまいます。 何か良い方法があれば教えていただきたいです。 ご教授よろしくお願いします。

  • 条件付き書式でセルに色を付けた際のズレ

    OSバージョン:Windows7 Professional SP1 Excelバージョン:Excel2007(12.0.06665.5003) SP3 MSO(12.0.06665.5003) スケジュール表を作成するにあたり、条件付き書式で自動的に該当時刻列のセルに色が付くようにしたいと思っています。 サンプルとして、 ------------------------------------------ 【セルに値を入力】 ・A3:A62に22:00~22:59の時刻を1分刻みで入力(開始時刻列) ・B3:B62に22:01~23:00の時刻を1分刻みで入力(終了時刻列) ・C2:BK2に22:00~23:00の時刻を1分刻みで入力(数式参照用時刻行) 【条件付き書式を設定】 ■数式を使用して、書式設定するセルを決定を選択し、以下の数式を設定 "=IF(C$2>=$A3,IF(C$2<$B3,TRUE,FALSE),FALSE)" ■書式:セルを赤で塗りつぶす ■適用先:"=$C$3:$BK$62" ------------------------------------------ と設定します。 全て開始~終了が1分なので、各行1セルずつ赤色がついて、綺麗に斜めの線が出来る想定なのですが、 6行目、8行目、10行目、12行目以降の行について、2セルずつ赤色がついてしまいます。 こうなってしまう事象原因がお分かりの方はいらっしゃいますでしょうか? よろしくお願いします。