0

我一直在這一天作戰,無法弄清楚它爲什麼會發生。條件格式錯誤5,語法錯誤和請求使用「=」

每當我使用VBA添加一個新的條件格式(並且因爲通過Excel的GUI),它不會讓我編寫一個基於該行第一個單元格中的文本突出顯示行的公式。不,讓這個更令人困惑的是,我在後面的子代碼中做了幾乎相同的代碼(使用不同的文本),但Excel不會給我一個錯誤。

下面給我一個運行時錯誤「5」無效的過程或參數

Range("A10", Range("A10").Offset(ItemsCount - 1, CLPCount + 2)).Select 
Selection.FormatConditions.Delete 
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=IF($A10=""Duplication"",TRUE,FALSE)" 
Selection.FormatConditions(1).Interior.ColorIndex = 3 
Selection.FormatConditions(1).Font.ColorIndex = 2 
Selection.FormatConditions(1).StopIfTrue = False 

和說我應該通過使用「=」用它,當我嘗試運行它告訴碼我有一個語法問題。

Range("A10", Range("A10").Offset(ItemsCount - 1, CLPCount + 2)).Select 
    Selection.FormatConditions.Delete 
    Selection.FormatConditions.Add(Type:=xlExpression, Formula1:="=IF($A10=""Duplication"",TRUE,FALSE)") 
    Selection.FormatConditions(1).Interior.ColorIndex = 3 
    Selection.FormatConditions(1).Font.ColorIndex = 2 
    Selection.FormatConditions(1).StopIfTrue = False 

然後,如果我從公式中刪除絕對引用列的$,它沒有問題但沒有提供所需的函數。如果我把「圍繞單元格參考」相同的東西

=================================== ========================================

非常感謝那些 除了我,我們都沒事,我錯了,沒錯......這是我運行Excel的方式,Excel運行在R1C1的公式模式下,所以問題在於公式中使用的單元格引用樣式用於在此模式下使用Excel時的條件格式化。

回答

0

將公式行更改爲:

Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A10=""Duplication""" 

我懷疑無論出於何種原因,公式字符串根據您的區域設置無效 - 例如,您應該使用分號而不是逗號。

+0

我剛剛寫了一個答案。 它讓它通過,但公式不會突出顯示該行。 – Digitourist

+0

它在這裏完美運作。您確定A中的單元格沒有前導或尾隨空格嗎? – Rory

+0

他們沒有任何東西,但「Ok」或「Duplication」,因爲它是一個選擇文本的公式,然後例程繼續將公式的輸出轉換爲靜態文本。 – Digitourist

0

我不是100%的問題。我改寫你的代碼爲:

Sub conditionalFormatting() 
Range("A10", Range("A10").Offset(0, 10)).Select 
With Selection.FormatConditions 
    .Delete 
    .Add Type:=xlExpression, Formula1:="=IF($A10=" & Chr(34) & "Duplication" & Chr(34) & ",TRUE,FALSE)" 
End With 
With Selection.FormatConditions(1) 
    .Interior.ColorIndex = 3 
    .Font.ColorIndex = 2 
    .StopIfTrue = False 
End With 
End Sub 

(改變了偏移硬編碼值),它似乎做了什麼程序是應該做的(如果$ A10是「複製」標記的區域紅色?)。你能進一步闡述一下嗎?

+0

我不確定我可以。 整個例程對2個報表進行一系列檢查。在這種情況下,我不能只檢查重複項並假定一個操作,所以我必須突出顯示並停止用戶輸入。列A聲明行是OK還是Duplication。所以條件格式使用它來知道該行是否應該用白色文本格式化爲紅色。 由於每當例行程序運行時範圍不同,我無法硬編碼它正在添加條件的區域。 – Digitourist

+0

剛剛嘗試強制偏移硬編碼值,我沒有得到任何不同的東西。 – Digitourist

0

正如編輯中對原始問題所述。

問題源於Excel選項中選擇的引用樣式。使用R1C1引用樣式時,它不會允許您在條件格式的公式中使用A1引用樣式。