我正在尝试创建一个能够找到输入的请购单号的查找功能,然后将信息放入正在搜索的单元格中的单元格中。我只更改了原始公式的工作表名称和范围。没有别的不同。我收到错误
' 1004' "无法获取Range类"
的Activate属性
在.activate
我能够通过插入
之前的激活来使代码正常工作 dim ReqNumber
这很有效,但现在它告诉我搜索方法所需的对象。
set cF= .Find
这给了我一些问题。我现在不太确定是什么问题。
Dim ReqNumber As Variant
ReqNumber = InputBox("Please Enter Requisition Number", "Information")
Dim FirstAddress As String, cF As Range
With ThisWorkbook.Sheets(" MthruF Schedule").Range("A:A")
.Cells(1, 1).Activate
'First, define properly the Find method
Set cF = .Find(What:=ReqNumber, _
after:=ActiveCell, _
LookIn:=xlFormulas, _
LookAt:=xlPart, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)
'If there is a result, keep looking with FindNext method
If Not cF Is Nothing Then
FirstAddress = cF.Address
Do
cF.Offset(0, 8).Value = ReqNumber
cF.Offset(0, 9).Value = EmpInfo.FirstName.Value & " " & EmpInfo.LastName.Value
cF.Offset(0, 10).Value = EmpInfo.ComboBox3.Value & "/" & EmpInfo.ComboBox20.Value & "/" & EmpInfo.YearCmb.Value
cF.Offset(0, 11).Value = EmpInfo.AgencyBox.Value
Set cF = .FindNext(cF)
'Look until you find again the first result
Loop While Not cF Is Nothing And cF.Address <> FirstAddress
End If
End With
答案 0 :(得分:0)
我认为是因为您在运行代码时选择了错误的工作表。
如果您没有使用正确的表格,此代码将失败:
Worksheets("MthruF Schedule").range("A1").activate
要执行搜索,无论您要删除.Cells(1,1).Activate
行的哪张表,您都不需要选择或激活要使用它的单元格。
在FIND
使用ActiveCell
替换.Cells(1,1)
。
通过这些更改,无论您使用哪张表,FIND
始终会在MthruF Schedule
的A列{@ 1}}列中查看。
修改强>
由于您没有更改您发现的值,因此您无需在循环中使用A1
。 Not cF Is Nothing
总是会找到一个值,除非您正在更改它 - 所以只需检查FIND
。