Excel VBA - 在查找中使用左函数

jcv*_*jcv 2 excel vba

我正在尝试将工作表函数“left”与“find”结合使用来确定 VBA 中的字符串变量。但是,excel将find函数解释为VBA函数,在解析时会产生错误信息。

在我的代码下面:

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

其中 MSa 是一个字符串。你能告诉我如何最好地解决这个问题吗?

提前谢谢了。

And*_*ASM 5

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

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

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

variable = Left(Sheet1.[A1],Application.WorksheetFunction.Find(".",Sheet1.[A1])-1)
Run Code Online (Sandbox Code Playgroud)

但是,从 VBA 调用 Excel 工作表函数确实有一些缺点(调试起来更困难且速度更慢)。最好使用本机 VBA 函数 InStr,它的工作方式与工作表函数 Find 非常相似。参数的顺序不同,但结果是一样的。所以我会写

variable = Left(Sheet1.[A1],InStr(Sheet1.[A1],".")-1)
Run Code Online (Sandbox Code Playgroud)