在特定列中查找函数的下一个值

时间:2018-02-08 10:07:08

标签: excel vba excel-vba

我正在尝试创建一个宏按钮,它将自动选择H列,然后在一个数组中逐个搜索并选择一个(每次单击宏时),该特定列中的每个单元格都包含€符号。我可以完全按照我想要的方式使用本机excel搜索功能,但这很费时间。但我不知道如何在VBA中做到这一点。请注意,H列中的单元格是货币格式的。到目前为止,对我来说几乎适用的代码是:

Search = InStr(ActiveCell.NumberFormat, Chr(128))

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

但上述代码并未自动选择要搜索的列H 。我必须手动完成。当我在上面的代码Columns("H").Select中插入时(为了使代码自动选择列H),宏选择第一个包含H列中的符号的单元格(这就是我想要的)但是当单击时再次它不会转到包含该列中的€符号的NEXT单元格。它坚持第一个发现。你能帮我吗?

3 个答案:

答案 0 :(得分:1)

您应始终避免使用Selection..Select

而不是Selection.Find指定正确的范围:

Worksheets("MySheetName").Columns("H").Find

另请查看Range.FindNext Method (Excel)。通过查找,您将始终只找到第一个事件。要进一步搜索,您需要使用FindNext。

答案 1 :(得分:1)

我不确定你想要实现什么,但是如果你需要找到格式化为Currency的单元格,我宁愿使用这段代码:

Sub findCur()
    Dim rngCol As Range
    Set rngCol = Range("H:H")

    With Application.FindFormat
        .Clear
        .NumberFormat = "$#,##0.00"
    End With
    rngCol.Find(What:="*", After:=ActiveCell, SearchFormat:=True).Select
End Sub

答案 2 :(得分:0)

为选择添加条件,例如:

If Selection.Column<>7 then Columns("H").select

这样一来,如果你已经在H列,它就不会重新选择它,但是如果你不在那里,它就会去那里。