我在sheet1(tblparts)上有一个数字列表,数字在A2范围内:A3900。
我在sheet2(sheet1)上列出了相应制造商的数字,范围应为A2:1390(制造商名称)和B2:1390(制造商编号)。我需要用sheet1中的制造商名称替换tblparts上的数字。
我一直得到"运行时错误424" :第10行所需的对象。
Sub Macro1()
Dim i As Integer
Dim FindStr As String
Dim RepStr As String
For i = 2 To 1390
FindStr = Sheet1.Range("B" & i).Value
RepStr = Sheet1.Range("A" & i).Value
tblParts.Range("A:A").Cells.Replace What:=FindStr, Replacement:=RepStr
Next i
End Sub
答案 0 :(得分:0)
您尚未在宏中定义tblParts
是什么,您必须使用Set
进行设置,因为它是一个复杂的对象而不是原始对象。
例如,假设tblParts
已定义并在活动工作簿中设置为"Sheet1"
,则以下内容应该有效:
Option Explicit ' Always a good idea!
Sub Macro1()
Dim tblParts As Worksheet
Dim i As Integer
Dim FindStr As String
Dim RepStr As String
Set tblParts = ActiveWorkbook.Sheets("tblparts")
Set sht = ActiveWorkbook.Sheets("sheet1")
For i = 2 To 1390
FindStr = Sht.Range("B" & i).Value
RepStr = Sht.Range("A" & i).Value
tblParts.Range("A:A").Cells.Replace What:=FindStr, Replacement:=RepStr
Next i
End Sub
顶部的Option Explicit
会强制您明确声明所有变量。如果不这样做,则假定它们属于Variant
类型。但是你在代码中使用变量变量来调用它不存在的Range
方法,因此你会得到错误。