2012-02-18 9 views
1

次のExcel VBAコードは、行EとFの開始日と終了日を一番上の行と比較します。 次に、各行にカラーバーを生成するためにセルをハイライト表示します。Excel vba - 既にハイライト表示されている行をスキップする

有効な日付を入力した後に、すでに強調表示されている行をスキップして自動的に色付きのバーを作成するにはどうすればよいですか?あなたが提供できるあらゆる援助を前もって感謝します。

Set Rng = Range(Range("E7"), Range("E" & RowS.Count).End(xlUp)) 'The start end dates are in columns E and F 
DateRng.Resize(Rng.Count + 1).Interior.ColorIndex = xlNone 

For Each Dn In Rng 
    For Each Ac In DateRng 

     If Ac >= Dn And Ac <= Dn.Offset(0, 1) Then 
      Ac.Offset(Dn.Row - 2 - 0).Interior.ColorIndex = Range("D4").Value 
      Ac.Offset(Dn.Row - 2 - 0).Borders(xlEdgeTop).Color = vbWhite 
      Ac.Offset(Dn.Row - 2 - 0).Borders(xlEdgeTop).LineStyle = xlContinuous 
      Ac.Offset(Dn.Row - 2 - 0).Borders(xlEdgeTop).Weight = xlThick 
      Ac.Offset(Dn.Row - 2 - 0).Borders(xlEdgeBottom).Color = vbWhite 
      Ac.Offset(Dn.Row - 2 - 0).Borders(xlEdgeBottom).LineStyle = xlContinuous 
      Ac.Offset(Dn.Row - 2 - 0).Borders(xlEdgeBottom).Weight = xlThick 
     End If 
    Next Ac 
Next Dn 

V

+0

完全なコードを表示します。 DateRngはどこで宣言されていますか?また、Option Explicitを使用して変数の宣言を強制する必要があります – JMax

答えて

2

私のソリューションは、(と確かにこれを解決するために、いくつかの異なる方法があります)。使用したい書式を含むスタイルを作成します。そして、どこでも、あなたのコード内で使用すると、スキップしたい場所

/スタイル(またはスタイル)実行して、現在のセルに対して有効な場合は、単純に尋ねることができる書式設定に基づいて行います。

If Ac.style = "MyStyle" Then 
' do stuff 
Else 
' do other stuff 
end if 

が複数あるかどうかを確認するにさまざまなスタイルを使用すると、コレクションまたはスクリプト辞書を使用して、関数を介してすべてのスタイルをテストできます。その仕組みの詳細をご希望の場合はお知らせください。

関連する問題