2013-08-20 102 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)