• 締切済み

excelのVBAマクロ教えてください。

エクセルのガントチャート。 例・横軸には1~20までの数字が入っていて縦軸は自由に数字を入れれるセル(D4と置く。) D4に数字で変化するガントチャート。D4に21以上の値を入れた時にその前に入力した値に戻す(ガントチャートは変化しない)状態にしたい。それをVBAマクロで組みたいのですがどうすればいいですか??至急お願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

VBAでやらなくても条件付き書式でできる。 右端列をD列の数値の最大値で見積もって、E列E4からその列まで範囲指定(対象の全行) 「数式が」で 式を =$D4>=(COLUMN()-4) セルのパターン色を設定 これはD列の値の変化に対し即反応(連動)する 各行で別の色を設定する場合は1行ごとの操作になり面倒。 これをマクロの記録でとってVBAとする方法も在る。こんなこともやってみたのか。 ーーー VBAでやるなら 同じ理屈で、その列番号-4が、D4セルの値より同じか小の場合は、そのセルの色を指定色に着色。 のコードを組んだら仕舞い。 質問は何処がわからないのさえ絞れてない。 D列の値の変動に対し、即連動は初心者はあきらめることでしょう。 ーー 参考 Sub Macro4() d = Range("D65536").End(xlUp).Row MsgBox d For i = 4 To d For j = 5 To 30 If j - 4 <= Cells(i, "D") Then Cells(i, j).Interior.ColorIndex = i Mod 15 End If Next j Next i End Sub 30や i Mod 15の個所は、実情に合わせたり、色を工夫して。

jeongkuan
質問者

お礼

お返事ありがとうございます。 要はD列に21以上の値を入れたときにDの値をCの値と同じ値に戻したいのです。 C列にはif関数でDの値と同じ値を残すようにしています。 つまり、Dに21以上の値を入れたときにはCの値は変わらないようにしています。 よろしくお願いします。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

後々に改定があった場合に対応がとれないからマクロの丸投げ質問は回答が 付きにくいです。 図をみるとエクセル2010なので条件付き書式設定で実現する方が簡単だと 思いますのでそちらをお勧めします。 因みに色付けの条件、対象値が21以上の場合の対応についてもう少し具体的に 説明して別カテゴリで再質問した方が良いと思います。

jeongkuan
質問者

お礼

すいません・・・素人で・・・ アドバイスありがとうございます!

関連するQ&A

専門家に質問してみよう