我正在尝试将范围A:3复制到A:x(其中x是表“AgentName”中的行数)来自工作表“AgentName” 但是,每当我尝试使用变量复制范围时,它就会给出错误1004。 我已经阅读了我能找到的所有内容。这是我尝试过的两个常见的。
Worksheets("AgentName").Range("A3:A"&x).copy
Worksheets("AgentName").Range(Sheets("AgentName").Cells(3, 1), Sheets("AgentName").Cells(x, 1)).Copy
^我已经尝试过没有Sheets,只有细胞,细胞和范围在一起。
以下是代码的缩写版本:
Private Sub CommandButton1_Click()
'CountRows in AgentName Table
Dim myWorkSheet As Worksheet, myTable As ListObject, x As Long
Set myWorkSheet = ActiveWorkbook.Worksheets("AgentName")
Set myTable = myWorkSheet.ListObjects("AgentName")
x = myTable.DataBodyRange.Rows.Count
'Specific Forms for All Agents (Motivated)
If Range("B3").Value = "All Agents" And Range("C3").Value = "Motivated" Then
Worksheets("Other Forms").Range("A1:H2").Copy
Worksheets("Master").Range("B6:I7").PasteSpecial
Worksheets("AgentName").Range(Sheets("AgentName").Cells(3, 1), Sheets("AgentName").Cells(x, 1)).Copy
Worksheets("Master").Range("B8:B13").PasteSpecial
Range("B6:I13").Borders.LineStyle = xlContinuous
End If
End Sub
答案 0 :(得分:0)
我看到两个潜在的错误来源: 首先,将具有非常量大小的范围复制并粘贴到具有恒定大小的范围中,即:
Worksheets("AgentName").Range(Sheets("AgentName").Cells(3, 1), Sheets("AgentName").Cells(x, 1)).Copy
Worksheets("Master").Range("B8:B13").PasteSpecial
你将A3:Ax粘贴到B8:B13,如果x不等于8,这将给你一个错误,所以只需将它粘贴到第一个单元格中,excel将假设你想要粘贴下面的其余部分。所以:
Worksheets("Master").Range("B8").PasteSpecial
代替。
第二点是你的复制结构:
Worksheets("AgentName").Range(Sheets("AgentName").Cells(3, 1), Sheets("AgentName").Cells(x, 1)).Copy
如果你已经定义了一个,我宁愿使用listobject。
mytable.databodyrange(1,mytable.listrows.count).copy
这个或类似的东西应该有效。请注意.row为您提供绝对行,而listrow将为您提供相对于表的行。所以mytable.databodyrange(1,3)
将是表格的第一行和第三列中的条目,无论表格是什么。这可能是绝对行9053和绝对列456.通常最好使用这样的相对坐标,你可以再次使用代码用于其他目的,你只需要调整表格。
祝你好运,我希望这有帮助!