VBA Excel查找货币格式单元格

时间:2018-02-05 13:23:24

标签: excel vba excel-vba

我根本没有VBA编码的经验,我有一个看似简单的问题。我想创建一个单击按钮宏,它将查找并选择每个货币格式化单元格,其中包括欧元符号€或特定列中总和大于0的每个货币格式化单元格。目前这段代码:

Cells.Find(What:="€", After:=ActiveCell, LookIn:=xlValues, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate

接近我想要达到的目标(找到€符号),但它不适用于货币格式化的单元格,默认情况下会自动将欧元符号添加到总和中,并且不会定义到特定列。 例如,如果在我的工作表中只有一些货币格式化的单元格有一个€符号(我正在寻找),那么宏给我一个运行时错误91 ..使用原生excel搜索功能,相同的精确搜索参数工作正常。 / p>

见附图 请帮助它对我的项目帮助很多=)

这不起作用: https://i.stack.imgur.com/UQqJp.jpg

这就像我希望我的宏一样找到欧元符号。 https://i.stack.imgur.com/fM1lY.jpg

2 个答案:

答案 0 :(得分:1)

测试以下内容 -

Sub test()
    Dim rng As Range

    Set rng = Cells.Find(What:="€", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

    If Not rng Is Nothing Then
        rng.Activate
    End If
End Sub

答案 1 :(得分:1)

您的部分需求。此例程将Select包含欧元符号的所有单元格。它将处理由格式化显示的欧元以及包含在单元格文本中的欧元

Sub test()
    Dim rng As Range, r As Range, rFound As Range

    Set rFound = Nothing
    For Each r In ActiveSheet.UsedRange
        If InStr(1, r.Text, "€") > 0 Then
            If rFound Is Nothing Then
                Set rFound = r
            Else
                Set rFound = Union(rFound, r)
            End If
        End If
    Next r

    If Not rFound Is Nothing Then rFound.Select
End Sub