2013-02-06 73 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