查找表格中的数据:
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常用通配符:
Find中的参数:
lookat:
查找范围:
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
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
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
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