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
。