Excel宏使用工作表之间的替换功能

时间:2014-07-24 22:24:56

标签: vba excel-vba replace excel

我在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

1 个答案:

答案 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方法,因此你会得到错误。