0
点赞
收藏
分享

微信扫一扫

Vba中Find方法使用总结(一)

查找表格中的数据:

Sub findNum()
Dim i&, j&, d As Date

For i = 1 To 10000
For j = 1 To 50
If Cells(i, j) = "老石" Then
Cells(i, j).Interior.Color = vbRed
Cells(i, j).Select
GoTo FOUND
End If
Next j
Next i

FOUND:
MsgBox "公用时:" & DateDiff("s", d, Time()) & "秒"
End Sub

  改成数组:

Sub findNum()
Dim i&, j&, d As Date, arr()
d = Time()

arr = Range(Cells(1, 1), Cells(10000, 50))

For i = 1 To 10000
For j = 1 To 50
If arr(i, j) = "老石" Then
Cells(i, j).Interior.Color = vbRed
Cells(i, j).Select
GoTo FOUND
End If
Next j
Next i

FOUND:
MsgBox "公用时:" & DateDiff("s", d, Time()) & "秒"
End Sub

  用Range:  没有找到任何结果,返回Nothing

Sub findNun()

Dim d As Date, r As Range

d = Time()

Set r = Range(Cells(1, 1), Cells(10000, 50)).Find("老石")

r.Interior.Color = vbRed
r.Select

MsgBox "公用时:" & DateDiff("s", d, Time()) & "秒"

End Sub

  加上判断:

Sub findNun()

Dim d As Date, r As Range

d = Time()

Set r = Range(Cells(1, 1), Cells(10000, 50)).Find("老石")

If Not r Is Nothing Then
r.Interior.Color = vbRed
r.Select

MsgBox "公用时:" & DateDiff("s", d, Time()) & "秒"
Else
MsgBox "没有找到"
End If
End Sub

  office常用通配符:

Vba中Find方法使用总结(一)_数组

 

Find中的参数:

Vba中Find方法使用总结(一)_死循环_02

 

 

Vba中Find方法使用总结(一)_死循环_03

 

 lookat:

Vba中Find方法使用总结(一)_数组_04

Vba中Find方法使用总结(一)_数组_05

 

 

Vba中Find方法使用总结(一)_死循环_06

 

 查找范围:

Vba中Find方法使用总结(一)_数组_07

 

 

Vba中Find方法使用总结(一)_数组_08

 

 

Vba中Find方法使用总结(一)_数据_09

 

 

Vba中Find方法使用总结(一)_数组_10

 

 

Sub formatDemo()
Dim r As Range
Application.FindFormat.Interior.Color = vbBlack
Application.FindFormat.Font.Color = vbWhite

Set r = Cells.Find("老石", searchformat:=True)

If Not r Is Nothing Then
MsgBox r.Address
End If
End Sub

  

Sub formatDemo()
Dim r As Range

With Application.FindFormat
.Interior.Color = vbBlack
.Font.Color = vbWhite
End With

Set r = Cells.Find("老石", searchformat:=True)

If Not r Is Nothing Then
MsgBox r.Address
End If
End Sub

  

Vba中Find方法使用总结(一)_死循环_11

 

 

Vba中Find方法使用总结(一)_数组_12

 

 

Vba中Find方法使用总结(一)_数组_13

 

 

Sub findNum()
Dim r As Range

Set r = Range("b2:e5").Find(2, after:=Range("C4"), lookat:=xlWhole)

If Not r Is Nothing Then
r.Interior.Color = vbRed
End If
End Sub

  

Vba中Find方法使用总结(一)_死循环_14

Sub findNum()
Dim r As Range

Set r = Range("b2:e5").Find(2, searchorder:=xlByColumns)

If Not r Is Nothing Then
r.Interior.Color = vbRed
End If
End Sub

  

Vba中Find方法使用总结(一)_数组_15

 

Sub findNum()
Dim r As Range

Set r = Range("b2:e5").Find(2, searchorder:=xlByColumns, searchdirection:=xlPrevious)

If Not r Is Nothing Then
r.Interior.Color = vbRed
End If
End Sub

  

Sub findNum()
Dim r As Range

Set r = Cells.Find("熊猫")

If Not r Is Nothing Then
r.Interior.Color = vbRed
End If
End Sub


Sub findNum1()
Dim r As Range

Set r = Cells.Find(2, lookat:=xlWhole, searchorder:=xlRows)

If Not r Is Nothing Then
r.Interior.Color = vbRed
End If

End Sub

Sub findNum2()
Dim r As Range
Set r = Cells.Find(2, lookat:=xlWhole, searchorder:=xlRows)

If Not r Is Nothing Then
r.Interior.Color = vbRed
End If

Do While Not r Is Nothing

Set r = Cells.Find(2, after:=r)

If Not r Is Nothing Then
r.Interior.Color = vrRed
End If

Loop

End Sub

Sub findNum3()
Dim r As Range
Set r = Cells.Find(2, lookat:=xlWhole, searchorder:=xlRows)

Do While Not r Is Nothing
r.Interior.Color = vbRed
'程序进入了死循环'
Set r = Cells.Find(2, after:=r)
'判断是不是第一次的单元格'
If r.Address = "$C$2" Then Exit Do

Loop

End Sub

Sub findNum4()
Dim r As Range, s As String

Set r = Cells.Find(2, lookat:=xlWhole, searchorder:=xlRows)
If Not r Is Nothing Then
s = r.Address
End If

Do While Not r Is Nothing
r.Interior.Color = vbRed
Set r = Cells.Find(2, after:=r)
If r.Address = s Then Exit Do
Loop
End Sub


Sub findNum5()
Dim r As Range, s As String
Set r = Cells.Find(2, lookat:=xlWhole, searchorder:=xlRows)
If Not r Is Nothing Then
s = r.Address
'do while 循环'
Do
r.Interior.Color = vbRed
Set r = Cells.Find(2, after:=r)
Loop While r.Address <> s

End If
End Sub

Sub findNum6()

Dim r As Range, s As String
Set r = Cells.Find(2, lookat:=xlWhole, searchorder:=xlRows)
If Not r Is Nothing Then
s = r.Address
'do while 循环'
Do
r.Interior.Color = vbRed
Set r = Cells.Find(2, after:=r)
'不断循环,知道r的地址是s时终止'
Loop Until r.Address = s

End If
End Sub

Sub findNum7()

Dim r As Range, s As String
Set r = Cells.Find(2, lookat:=xlWhole, searchorder:=xlRows)
If Not r Is Nothing Then
s = r.Address
'do while 循环'
Do
r.Interior.Color = vbRed
Set r = Cells.FindNext(r)
'不断循环,知道r的地址是s时终止'
Loop Until r.Address = s

End If
End Sub

  



举报

相关推荐

0 条评论