我有两个潜艇,第一个子“查找”找到G列中的所有值,范围(G1:G10),我有三个值,所以它循环3次并给我值。
现在我调用第二个子“Find2”来查找A列中的值,范围(A1:A10)。问题是它只运行一次..它没有循环三次以获得3个值。任何的想法 ?。为什么它不起作用。
Sub Find()
Set shtSheet1 = Sheets("Sheet1")
With shtSheet1.Range("G1:G10")
Set V = .find("*", LookIn:=xlValues)
If Not V Is Nothing Then
FirstAddress = V.Address
Do
X = V
Call Find2
Set V = .FindNext(V)
Loop While Not V Is Nothing And V.Address <> FirstAddress
End If
End With
End Sub
第二分
Public Sub Find2()
Set shtSheet1 = Sheets("Sheet1")
Set shtSheet2 = Sheets("Sheet2")
With shtSheet1.Range("A1:A10")
Set C = .find(X, LookIn:=xlValues)
If Not C Is Nothing Then
MsgBox X
End If
End With
End Sub
答案 0 :(得分:1)
我认为在子程序中使用.Find()会干扰主程序中的.FindNext()。
答案 1 :(得分:0)
我同意加里的意见,有一些干扰正在发生。而不是在子例程中使用Find(),看看这是否适合您。
Public Sub Find2()
Dim shtSheet1 As Worksheet
Dim C As Range
Set shtSheet1 = Sheets("Sheet1")
Set C = shtSheet1.Range("A1:A10")
If Not IsError(Application.Match(X, C, 0)) Then
MsgBox X
End If
End Sub
答案 2 :(得分:0)
使用
private Function Find2()
end function
而不是sub