excel vba-将iferror / find公式转换为vba

问题描述 投票:0回答:3

我有以下excel公式

IFERROR(MID(B7;FIND(" ";B7)+1;1);"")

我现在想将其转换为VBA,但是在这里集成Find函数时遇到了麻烦。这是我到目前为止的内容

IfError(Mid(Sheets("MySheet").Cells(x, 7),Sheets("MySheet").Cells(x, 7).Find " " + 1, 1), "")

但是这显然是不正确的。有人可以帮我吗?

excel vba excel-vba
3个回答
1
投票

类似这样的名称,例如get_first_char_after_space("testing xys")

Function get_first_char_after_space(strInput As String) As String

If InStr(1, strInput, Chr(32)) > 0 Then
    get_first_char_after_space = Left(Split(strInput, Chr(32))(1), 1)
Else
    get_first_char_after_space = vbNullString
End If

End Function

0
投票

您可以在以下SO问题上找到IFERROR的解决方案:https://stackoverflow.com/a/29390944/6908282

并且VBA具有Range.Find方法,可用于替换FIND公式。文档链接:https://docs.microsoft.com/en-us/office/vba/api/excel.range.find


0
投票

这里是一个UDF,可以完成您的工作表功能。如您所见,可以避免在VBA中发生错误。我认为整个功能可以压缩为一行,但是可能带来的任何好处都将以可读性和稳定性为代价。实际上,代码非常健壮。毫无疑问,它很容易移植到更大的项目中。

Function NextChar(Cell As Range) As String
    ' IFERROR(MID(B7;FIND(" ";B7)+1;1);"")

    Dim Txt As String
    Dim n As Integer

    Txt = Cell.Value
    n = InStr(Txt, " ")
    If n Then FindBlank = Mid(Txt, n + 1, 1)
End Function
© www.soinside.com 2019 - 2024. All rights reserved.