我正在开发一个代码项目,我需要在一个工作表(在本例中为'test sheet')中将G列中一个单元格的值与另一个工作表中B列中单元格的值进行匹配(in本案例'信息')。一旦我在“信息”表中找到了这个匹配的行,我需要从该匹配行中的列C中检索整数值。
我正在尝试在我可以从程序的不同部分调用的函数中实现此代码。我试过用很多不同的方法来量化我的变量,但是当我从main sub调用我的函数时,我遇到了类型不匹配的问题。我非常迷茫和沮丧。你们中的任何人都能看到我做错了什么吗?
主要子呼叫:
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
答案 0 :(得分:1)
也许它应该是Temp = FindHigh(Range("R7").Value)
或Temp = FindHigh(Cells(7,18))
答案 1 :(得分:0)
在您的Sub“AutoSend”中,您正在使用未在任何地方定义的“r”
答案 2 :(得分: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列中是 NOT ,或者来自循环,告诉我们哪个单元格保存您想要的值查找,或者给我们代码到你的循环将非常有助于给你一个更好的答案。