【问题标题】:VBA Excel find function for currency formatted cellsVBA Excel查找货币格式单元格的功能
【发布时间】:2018-07-15 08:51:57
【问题描述】:

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

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

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

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

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

这会完全按照我的宏所希望的那样找到欧元符号。 https://i.stack.imgur.com/fM1lY.jpg

【问题讨论】:

  • 这个LookAt:=xlWhole应该是LookAt:=xlPart
  • 您的“本机 Excel 搜索参数”完全相同。特别是,本机参数是 NOT lookat:=xlWholeNOT lookin:=xlValues。而该对话框是lookat:=xlPartlookin:=xlValues。改变你的宏,你应该没问题。
  • shrivallabha.redij 我忘了提到我尝试使用 LookAt:=xlPart 但仍然得到相同的运行时错误 91
  • Ron Rosenfeld 我做了更改,但仍然无法正常工作:(。请看我重新上传的图片

标签: vba excel


【解决方案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

【讨论】:

  • Gary 的学生比你非常花时间帮助我。您的代码选择了我的工作表中所有带有 € 符号的单元格,并激活了第一个找到的单元格。当我用我想要的范围更改“ActiveSheet.UsedRange”时 ActiveSheet.Range("H2:H200") 它会选择我定义的范围内的所有€符号并激活找到的第一个单元格。到目前为止很好,但是每次我使用宏时,如何让它在我的预定义范围内找到并激活下一个€符号?
【解决方案2】:

测试以下-

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

【讨论】:

  • 查找零件,LookAt:=xlPart
  • Gary 的学生和 Dy.Lee 感谢您的回答,但不幸的是,它仍然没有在货币格式单元格上找到欧元符号......仅在一般格式上:(。我也尝试过 LookAt:= xlPart
猜你喜欢
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多