我有一个基本问题。如果单元格(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
答案 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