VBAsearch标准

我正在使用下面的代码来find一列。

Set FinColumn = .Find(What:="Tax", AFter:=.Cells(1, 1), LookIn:=xlValues, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False). 

如果我有像下面的列,它应该确定。

 Tax Tax&Fee Tax&Fee1 

我怎样才能改变上面的设置语句find所有上述columns.is有任何search条件,我可以实现。

谢谢,

Chaitu

虽然我的第一个答案是正确的,但并不完整。 以下代码循环查找每个包含“税”的单元格,并在全部处理完毕后停止。

直接回答你的问题是用xlWholereplacexlPart 。 但是,有些错误会阻止你的代码工作。 例如,您不要定义查找操作的范围。 我已经添加了.Cells.Find前面。

希望这可以帮助。

 Option Explicit Sub FindAllTax() Dim ColCrnt As Long Dim ColLast As Long Dim FinColumn As Range Dim RowCrnt As Long Dim RowLast As Long RowLast = 0 ColLast = 0 With Sheets("Sheet6") Set FinColumn = .Cells.Find(What:="Tax", After:=.Cells(1, 1), _ LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Do While True If FinColumn Is Nothing Then ' No occurrence of "Tax" found Exit Do End If RowCrnt = FinColumn.Row ColCrnt = FinColumn.Column If RowCrnt < RowLast Or _ (RowCrnt = RowLast And ColCrnt < ColLast) Then ' Current cell is above last cell so have looped after finding ' all values. Exit Do End If Debug.Print "Cells(" & RowCrnt & ", " & ColCrnt & ")=" & _ .Cells(RowCrnt, ColCrnt).Value RowLast = RowCrnt ColLast = ColCrnt Set FinColumn = .Cells.FindNext(FinColumn) Loop End With Debug.Print "All cells containing ""tax"" processed" End Sub 

托尼已经给你一个方法。 这是另一个使用通配符。 现在使用通配符很重要,因为假设你有单元格

A1 =税

B10 =税费

C15 =税费1

D20 = 123Tax

G45 = DoggyTax

如果您只想search税务,即税收,税费和税费1,该怎么办?

另外当你在所有单元格中search时,你必须指定范围。 这里是快速的例子

 Option Explicit Sub Sample() Dim oRange As Range, aCell As Range, bCell As Range Dim ws As Worksheet Dim ExitLoop As Boolean Dim SearchString As String, FoundAt As String On Error GoTo Err '~~> The Sheet where the search has to be performed Set ws = Worksheets("Sheet1") '~~> In All cells Set oRange = ws.Cells '~~> Search string SearchString = "Tax*" Set aCell = oRange.Find(What:=SearchString, LookIn:=xlValues, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) '~~> If search was found If Not aCell Is Nothing Then Set bCell = aCell FoundAt = aCell.Address Do While ExitLoop = False Set aCell = oRange.FindNext(After:=aCell) If Not aCell Is Nothing Then If aCell.Address = bCell.Address Then Exit Do FoundAt = FoundAt & ", " & aCell.Address Else ExitLoop = True End If Loop Else MsgBox SearchString & " not Found" End If MsgBox "The Search String has been found these locations: " & FoundAt Exit Sub Err: MsgBox Err.Description End Sub 

您可以在下面提到的链接中find更多关于FIND()和FINDNEXT()的信息。

主题:.Find和.FindNext在Excel VBA中

链接 : http : //siddharthrout.wordpress.com/2011/07/14/find-and-findnext-in-excel-vba/

注意 :如果你想查找所有“税”的实例,那么你不需要通配符。 所有你需要做的就是使用下面的托尼build议。

 LookAt:=xlPart 

HTH

希德