Excel VBA – 使用左边function查找

我试图使用工作表函数“左”与“查找”结合来确定VBA中的stringvariables。 但是,excel将find函数解释为VBA函数,parsing时会产生错误消息。

在我的代码下面:

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

MSa是一个string。 你能告诉我如何才能最好地解决这个问题?

提前谢谢了。

InStr方法与工作表函数Find等效,以使用它:

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

简短的答案是使用Application.WorksheetFunction.Find 。 但是我不会使用它。 参见下文。

所以在Sheet1上inputabc.def到单元格A1中。
在另一个单元格中input=LEFT(A1,FIND(".",A1)-1)并获取abc值。

要在VBA中调用相同的函数,我会写

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

虽然调用VBA的Excel工作表函数确实有一些缺点(debugging比较困难,速度也较慢)。 最好使用原生VBA函数InStr,它与工作表函数Find类似。 参数的顺序不同,但结果是一样的。 所以我会写

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

为了使用工作表函数Find您需要完全符合以下条件:

 Application.WorksheetFunction.Find 

使用Find和VBA将会认为它是一个VBA函数。 一样的match