2013-02-06 71 views
1

我有下面的代码,并且将我的头撞向墙壁,为什么它不起作用。 使用范围为$ K10的注释行时,当我分配一个命名范围rngValidation时不起作用。定义的“ptrValidationCells”的名称范围设置为$ K10。将定义的名称赋值给一个变量

Sub FormatConditions_2() 

    Dim rngToFormat As Range 
    Dim rngValidation As Range 

    Set rngToFormat = ActiveSheet.Range("inpInputCells") 
    Set rngValidation = ActiveSheet.Range("ptrValidationCell") 

' rngToFormat.FormatConditions.Add Type:=xlExpression, Formula1:="=$K10<>FALSE" 

    rngToFormat.FormatConditions.Add Type:=xlExpression, Formula1:="=rngValidation <>FALSE" 

     With rngToFormat.FormatConditions(2).Interior 
      .PatternColorIndex = xlAutomatic 
      .Color = RGB(255, 192, 0) 
      .TintAndShade = 0 
     End With 
     With rngToFormat.FormatConditions(2).Font 
      .Bold = True 
      .Italic = False 
      .Color = RGB(192, 0, 0) 
      .TintAndShade = 0 
     End With 

End Sub 

感谢您的任何援助

回答

0

条件格式执行工作簿中的环境,而不是VBA环境(如果我可以这样说),所以你需要使用一个命名的范围,而不是一个VBA变量。

另外,

rngToFormat.FormatConditions.Add Type:=xlExpression, Formula1:="=" & rngValidation.Address & "<>FALSE" 

应该做的伎俩。

+0

几乎正确。你可以使用'Formula1:=“= ptrValidationCell <> FALSE”' –

+0

好吧,Chris。我没有注意到rngValidation实际上是一个常量,因此在子程序中是完全不必要的,如图所示。 – grahamj42

+0

我有替代方法,因为这是一个更大的项目的一部分。你的建议抛出一个运行时错误1004 rngValidation.Address显示$ F $ 1048575当代码与F8运行,即使在工作簿中定义的名称是$ K10 – sglxl