我正在尝试创建一个宏按钮,它将自动选择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单元格。它坚持第一个发现。你能帮我吗?
答案 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列,它就不会重新选择它,但是如果你不在那里,它就会去那里。