当具有确切值时,从另一个工作簿复制行

时间:2013-11-16 16:26:52

标签: excel vba

我有一个基本问题。如果单元格(i,4)具有确切的已知值,我想将工作簿“WB1”中的行复制到工作簿“WB”。我试图编写的代码不起作用,我该怎么办才能使它工作?希望有人可以帮助我:)

Private Sub CommandButton1_Click()

Dim i As Integer

For i = 8 To 300

If Workbooks("WB1").Worksheets("Commodity Action Plan").Cell(i,4).Value  = "Zamet" Then Workbooks("WB1").Worksheets("Commodity Action Plan").EntireRow.Copy

Workbooks("WB2").Worksheets("Action plan").EntireRow.Paste

End If

Next i

End Sub

1 个答案:

答案 0 :(得分:0)

我复制并检查了你的代码,由于一些错误而无法编译..

你的If声明在一行,应该是

If ValueToEvaluate = true Then

'code to execute goes here

End If 

If ValueToEvaluate = True Then 'code to execute goes here

如果您在一行上有完整的陈述,那么您不需要End If

第二个问题是你试图得到一张纸的整个属性,

Workbooks("WB1").Worksheets("Commodity Action Plan").EntireRow.Copy

这存在于范围对象上,所以你可能想要像

这样的东西
Workbooks("WB1").Worksheets("Commodity Action Plan").Rows(i).EntireRow.Copy

您可以指定目标(范围)作为Paste函数的第二个参数,而不是使用Copy,这比复制和放大更容易且更不容易出错。粘贴2阶段法。


尝试类似:

Private Sub CommandButton1_Click()

Dim i As Long   'Change to long so we don't get an error past row 32767
Dim outRow as Long    
Dim sourceWs As Worksheet, destWs As Worksheet

Set sourceWs = Workbooks("WB1").Worksheets("Commodity Action Plan")
Set destWs = Workbooks("WB2").Worksheets("Action plan")

outRow = 1

'For testing
'Set sourceWs = Sheet1
'Set destWs = Sheet2

    For i = 8 To 300

        If sourceWs.Cells(i, 4).Value = "Zamet" Then

        sourceWs.Rows(i).EntireRow.Copy destWs.Rows(outRow)
        outRow = outRow + 1
        Application.CutCopyMode = False

        End If

    Next i

End Sub