Excel VBA:如果替换找不到任何可替换的内容,则使用 MsgBox

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

我正在使用一个简单的代码来查找范围内的值,如果找到该值,则它的所有实例都会用“”清除。

代码:

Sub Clear()
    Range("A1:R34").Replace What:=Range("U3"), Replacement:="", Lookat:=xlWhole
    Range("U3").ClearContents
End Sub

因此,如果在范围内找到输入 U3 的值,则包含该值的单元格将被清除。此代码工作正常,并且如果找到这些实例,则会被清除,但是如果在我的范围内找不到 U3 中的值,我希望出现一个对话框。所以我会使用MsgBox“无效订单号”。我不知道如何将其放入我的代码中。我觉得我需要 IF 和 then,但我是新手,所以不确定。

基本上我希望代码是这样的:

Sub Clear()

    Range("A1:R34").Replace What:=Range("U3"), Replacement:="", Lookat:=xlWhole
    'If (if the above Replace finds nothing) Then MsgBox "Invalid Order Number"

    Range("U3").ClearContents

我不知道让它工作的语法。

excel vba replace msgbox
1个回答
0
投票
Sub Clear()
    Dim cFind as Range, ws as worksheet

    Set ws = ActiveSheet 'or specific named sheet
    Set cFind = ws.Range("U3")
    With ws.Range("A1:R34")
        If .Find(What:=cFind.Value, LookAt:=xlWhole) Is Nothing Then
            .Replace What:=cFind.Value, Replacement:="", Lookat:=xlWhole
            cFind.ClearContents
        Else
            Msgbox "Invalid order number: " & cFind.Value
        End If
    End With
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.