这段代码有什么问题?发现,VBA

时间:2013-11-04 11:12:31

标签: excel vba find

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

3 个答案:

答案 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