• ベストアンサー

EXCEL・VBAについておしえてください

Excel VBAで以下のようなことをしたいです。 C列に作業日が入っています。 date(today)を条件に C列で該当するセルが あればフォントの色を変えて強調させようと考えています。 それ以外は黒字フォントのままで固定です。 単独のセルだけを対象にするとうまくいので おそらく、行全体の値を取得しなければならないと 思うのですが forをつかってuboundを使っても うまくいきません。どなたかご意見をください 以下 うまくいかないコードですが のせています。  *********************** range("A1") = date set 選択範囲 = columns(C) if 選択範囲 = range("A1") then end if

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

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.2

Sub ssssss() Dim rg As Range Dim Crg As Range ’対象範囲 Set Crg = Range(Cells(1, 3), Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3)) ’対象範囲を1行目からC列に値のある最後まで For Each rg In Crg 選択したC列の範囲内をすべて一つずつ If rg.Value = Date Then ’日付が今日だったら rg.Interior.ColorIndex = 6 'そのセルを黄色にする End If Next End Sub もしその行のA列からF列を黄色にということでしたら rg.Interior.ColorIndex = 6 を range(cells(rg.row,1),cells(rg.row,6)).interior=6 にしてください。

tororo119
質問者

お礼

回答ありがとうございます。 書き込み内容を元に、無事VBAを 完成させることができました。 【目的】 イベントプロシージャに記述して 毎朝オープン時に当日の案件を強調させることにより作業漏れが なくなるようにしたいため 【参考になった点】 for each を使うにあたり、rg crg(該当列)の rgを作成させることが思いつかなかったため 1 TO crg(該当列)と数字の1を必ず使っていたため また、選択範囲があるわけでもないのでselectionも 違うのかなと

すると、全ての回答が全文表示されます。

その他の回答 (3)

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

条件付書式の問題ではないかな。 そういう場合、セルの処理を繰り回すシコシコ方式でなく、範囲指定して、条件付き書式そのものをコード化するほうが良い。 例 http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page12.htm のFotmatConditionなど 具体的には「操作をして、マクロの記録を採れ」ばどんなコードになるか分かります。 そのためにエクセルVBAがあるのです。 どんなものがあるか、日ごろから勉強するほかないです。 ーー >シコシコ方式 私が勝手に言っている名前だが、独自のロジックで1セルづつの値を問題にして処理するやり方。 初心者で少し進んだ人が、まず思いつきやすい方法。 Findメッソドなら、1セルずつIF文で聞いていく Sortメソッドならソートのアルゴリズムに則ってソートする こういうのは誤りも多いとか、考える時間がかかりコード数も多くなる。 ーー 上記は質問の路線で答えてないのは判ってます。 しかし質問者の路線で答えることは、今後のためにならないと思う。 実際に自分の現在の知識・力でVBAを使っていく方向と 一般にエクセルのVBA解説書などで載っている代表的・標準の方法の習得と 平行してやっていかないと進歩がないと思うからです。 http://meigen.shiawasehp.net/k/koushi04.html の「思う」を「行う=使う}に置き換えて見る心境です。

tororo119
質問者

お礼

回答ありがとうございます。 実は、条件付き書式を使い、today関数を使って色付けをしていたのですが 複数の条件付き書式をつかっているせいか、色が斑になってしまって うまくいかなくなっていたので、VBAで処理しようと思った次第です。 【参考になった点】 困った時はマクロの記録と取りなさいと言われたことを思い出しました。 初心者なりにVBAを記述して何となくうまくいってたので、今回の相談で もう一度VBAの参考書を見直すきっかけになりました。

すると、全ての回答が全文表示されます。
  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.3

Dim r As Range For Each r In 選択範囲 ... Next で、選択範囲のセルを一つずつ見ることが出来ます

すると、全ての回答が全文表示されます。
  • turuzou
  • ベストアンサー率33% (15/45)
回答No.1

直接の回答ではありません、下記も参考になりそうです。 エクセル技道場 http://www2.odn.ne.jp/excel/ の 文字の色が赤のセルをイタリックに http://www2.odn.ne.jp/excel/waza/macro.html#SEC7

すると、全ての回答が全文表示されます。

関連するQ&A