2017-06-13 65 views
-1

我正在处理此代码多个条件几个星期,它一直没有工作。我也检查了多个网站参考无济于事。所以基本上,我的宏正在看多列。如果Col B上显示“RAIL”,ColC上显示“France”或“Germany”,col O显示等于或超过77天,则Col O上的特定单元格将变为红色。
提前感谢所有的帮助或建议!基于3列满足条件时的VBA代码颜色单元格

这是我的代码到目前为止,当我运行它时没有被着色。

'颜色,如果它示出了FF代码导致 ' 色柱B:RAIL,柱C:要么法国或德国,山口○:IF => 77天

Dim rng As Range 
Dim rcell As Range 
Dim lr As Long 
lr = Range("B" & Rows.count).End(xlUp).row 
Set rng = Range("B1:B" & lr) 

For Each rcell In rng.Cells 
    If rcell.Value = "RAIL" Then 
     If rcell.Offset(0, 2).Value = "FRANCE" Or rcell.Offset(0, 1).Value = "GERMANY" Then 
      If rcell.Offset(0, 15).Value >= DateAdd("d", 77, Date) Then 
       rcell.Offset(0, 13).Interior.ColorIndex = 3 
      End If 
     End If 
    End If 

Next rcell 
+0

为什么不使用条件格式? –

+1

Y我们的问题是,您正在使用'rcell.Offset(0,2).Value =“FRANCE”'将'D'列转换为法国''rcell.Offset(0,1).Value =“FRANCE”' –

+1

如果rcell.Offset(0,13).Value> = DateAdd(“d”,77,Date)'Remember Offset是来自参考的单元格数 –

回答

0

问题解决了!感谢一位友善的开发者!显然,模块中的默认比较选项是二进制的,所以可能是拼写问题。所以他建议设置比较文本选项。

什么是学习体验!多谢你们!

Option Compare Text 

Sub Test() 
Dim B As Range 
For Each B In Range("B1", Range("B" & Rows.Count).End(xlUp)) 
With Range("O" & B.Row) 
    'No color by default 
    .Interior.ColorIndex = xlColorIndexNone 

    If B.Value = "RAIL" Then 
    Select Case Range("C" & B.Row) 
     Case "FRANCE", "GERMANY" 
     If .Value >= 77 Then .Interior.ColorIndex = 3 
    End Select 
    End If 
End With 
Next 
End Sub 
相关问题