2017-08-02 61 views
1

我想應用一個公式,在單元格中寫入YES或NO,檢查另一個單元格是否以Q)文本開頭。在VBA中應用公式?

手動在Excel中寫入正在工作。

=IF(LEFT(A2;2)="Q)";"YES";"NO") 

但是,當我嘗試自動執行宏

Range("R2").Formula = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")" 

運行時錯誤「1004」裏面:應用程序定義或對象定義的錯誤

而且,我會想要做整列,像這樣

Range("R2:R" & lastRow).Formula = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")" 

但爲此我必須先解決第一個問題。

我在做什麼錯?

+2

LEFT(A2,2) - 使用逗號,而不是一個分號 – braX

+1

那些分號(;)應該是逗號(,) –

回答

2

VBA使用逗號分隔符,無論本地設置

Range("R2:R" & lastRow).Formula = "=IF(LEFT(A2,2)=""Q)"",""YES"",""NO"")" 
+1

這解決了這個問題,我會盡快接受。謝謝。 –

0

而不是雙雙引號。嘗試跳過雙引號。

例如:而不是「」 Q「」試試\「Q \」

+0

這不是vb.Net,這是'VBA'。逃逸符號不同。 – Vityata

1

你總是可以嘗試錄製宏選項: 1.啓動記錄 2.式粘貼到細胞 3.停止記錄 4.看錄製的宏以及它如何格式化式

+0

我試過,但它使用R1C1格式,我不熟悉它。 –

1

一般而言,嘗試FO llowing:

  • 使Excel中的一個可行方案

  • 然後與可行方案中選擇單元格

  • 運行代碼

  • 在即時窗口一些有用的東西應該被打印。


代碼

Public Sub PrintMeUsefulFormula() 
    Dim strFormula As String 
    Dim strParenth As String 

    strParenth = """" 

    strFormula = Selection.Formula 
    strFormula = Replace(strFormula, """", """""") 

    strFormula = strParenth & strFormula & strParenth 
    Debug.Print strFormula 
End Sub 

來源:Error with IF/OR in VBA

1

Range.Formula期待一個EN-US語法。

使用Range.FormulaLocal根據區域設置插入一個公式:

Range("R2").FormulaLocal = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")"