0

我有两个子,第一个子“查找”在 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
4

3 回答 3

1

我认为在子例程中使用 .Find() 会干扰主例程中的 .FindNext() 。

于 2013-11-04T12:46:19.777 回答
0

利用

private Function Find2()
end function

插入子

于 2013-11-05T07:00:17.180 回答
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
于 2013-11-05T06:51:50.493 回答