0

我正在处理一个代码项目,在该项目中,我需要将一张表中 G 列中一个单元格的值(在本例中为“测试表”)与另一张表中 B 列中的一个单元格中的值(在本例中为信息')。在“信息”表中找到此匹配行后,我需要从该匹配行的 C 列中检索整数值。

我正在尝试在可以从程序的不同部分调用的函数中实现此代码。我尝试过以多种不同方式对变量进行尺寸标注,但是当我从主子调用函数时,我遇到了类型不匹配的问题。我非常失落和沮丧。你们中的任何人都可以看到我做错了什么吗?

主子调用:

Sub AutoSend()
    Dim Temp As Integer
    Dim rng As Range
    Dim r As Range

    Set rng = Range("A2:I6")

    For Each r in rng.Rows 'EDIT to more accurately reflect my code
        Temp = FindHigh(Cells(r,7).Value) 'THROWS ERROR HERE
    Next r
End Sub

调用的函数 FindHigh:

Function FindHigh(Key As String) As Integer

    Dim Target
    Dim Success As Integer

    Success = 0

    Sheets("Information").Select

    Set Target = Columns(2).Find(Key, LookIn:=xlValues)

    If Not Target Is Nothing Then
        Sheets("Information").Cells(Target.row, 3).Select
        Success = Rows(Target.RowIndex).Cells(Target.RowIndex, 3).Value
    End If

    Sheets("Test Sheet").Select
    FindHigh = Success

End Function
4

3 回答 3

1

也许应该是Temp = FindHigh(Range("R7").Value)

或者Temp = FindHigh(Cells(7,18))

于 2013-07-10T15:52:56.220 回答
0

在您的子“自动发送”中,您正在使用尚未在任何地方定义的“r”

于 2013-07-10T15:54:05.707 回答
0

你可以试试这个。

Sub AutoSend()
    Dim Temp As Integer
    Dim r As Integer
    r = 1 'Row Number of the Row in column G that has the value you want to look up.  
    With WorksheetFunction
    Temp = .IfError(.VLookup(Sheets("Test Sheet").Cells(r, 7).Value, _
                    Sheets("Information").Range("B:C"), 2, False), 0)
    End With
End Sub

如果具有您要查找的值的单元格不在G 列中,或者来自一个循环,告诉我们哪个单元格包含您要查找的值,或者将代码提供给您的循环将非常有帮助你一个更好的答案。

于 2013-07-10T16:21:59.847 回答