基于单元格的输入值对行的颜色格式设置

时间:2016-01-21 15:25:25

标签: excel vba

工作表中有一些数据,其中包含一个时间列。时间范围作为输入提供,以格式化该时间范围内的时间单元格的颜色。还需要包含这些单元格的行的颜色格式,但在输出中未观察到。值得一提的是,作为输入提供的开始时间或结束时间有时不匹配任何时间单元格的值。

附加是代码,并没有提供所需的输出。

任何形式的帮助将不胜感激。

{{1}}

2 个答案:

答案 0 :(得分:0)

代码中的最后一个循环不起作用。您需要将其更改为:

For Each c In Range("D:D")
    If c.Interior.Color = 13551615 Then
        Range_Search = "A" & c.Row & ":" & "H" & c.Row
        Range(Range_Search).Select
        Selection.Interior.Color = 13551615
    End If
Next c

我不确定"让"应该在你的陈述中做,但没有必要。此外,您需要从单元格c获取行,而不仅仅是c。

为了使这更好,我会通过工作表引用单元格,因为这可以防止选择不同工作表时可能出现的问题:

Dim ws As worksheet
Dim timeRange As Range

Set ws = Sheets("mySheet") 'Obviously change this to your sheet name
Set timeRange = ws.Range("D:D")

然后替换"选择。"用" timeRange。"在你的代码中,所以

Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:=Start_Time, Formula2:=End_Time

成为:

timeRange.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:=Start_Time, Formula2:=End_Time

然后改变你的最后一个循环来做类似的事情:

For Each c In timeRange
    If c.Interior.Color = 13551615 Then
        ws.Range("A" & c.Row & ":" & "H" & c.Row).Interior.Color = 13551615            
    End If
Next c

选择单元格效率不高,如果在尝试运行代码时无意中选择了其他内容,则可能会导致问题。

答案 1 :(得分:0)

我明白了。感谢OpiesDad的帮助。

基本上,在添加DisplayFormat之前,vba无法识别格式条件颜色。在interior.color命令之前。等等。

browser = Watir::Browser.new 

puts "1. Entering Google"
browser.goto "http://www.google.com"
search_text = "text"
puts " 2. enter "+ search_text +" in the search text field."
browser.text_field(:name, "q").set search_text
puts "3. click the 'Google Search' button."
browser.button(:name, "btnG").click
puts " First 10 links: "