2013-08-20 101 views
1

我試圖使用工作表函數「左」與「find」結合來確定VBA中的字符串變量。但是,excel會將find函數解釋爲VBA函數,這會在解析時產生錯誤消息。Excel VBA - 使用左函數查找

下面我的代碼:

... 
Else 
    MSa = MSa & Left(Range("D22"), Find(".", Range("D22")) - 1) & " " & Range("D25").Value & "." 
    Range("Q7").Value = MSa 
End If 
... 

其中MSa的是一個字符串。你能告訴我如何最好地解決這個問題嗎?

非常感謝提前。

回答

1

的InStr函數方法的工作表函數相當於查找,使用它:

MSa = MSa & Left(Range("D22"), InStr(Range("D22"), ".") - 1) & " " & Range("D25").Value & "." 
+0

那偉大工程,謝謝! – jcv

1

要使用工作表函數Find,您需要完全符合以下條件:

Application.WorksheetFunction.Find 

在其on上使用Find,VBA將假定它是一個VBA函數。 match也是如此。

4

簡短的回答是使用Application.WorksheetFunction.Find。但我不會使用它。參見下文。

因此在Sheet1上我輸入abc.def到單元格A1中。
在另一個單元格中,我輸入=LEFT(A1,FIND(".",A1)-1)並獲得值abc

要調用相同的功能VBA我會寫

variable = Left(Sheet1.[A1],Application.WorksheetFunction.Find(".",Sheet1.[A1])-1) 

調用Excel工作表函數從VBA也有一些缺點,雖然(它是難以調試速度較慢)。最好使用原生VBA函數InStr,它與工作表函數Find類似。參數的順序不同,但結果相同。所以,我會寫

variable = Left(Sheet1.[A1],InStr(Sheet1.[A1],".")-1)