Vba 尝试从多个工作表中逐个复制数据并粘贴到其他工作表。

Vba 尝试从多个工作表中逐个复制数据并粘贴到其他工作表。,vba,excel,Vba,Excel,我正在尝试从多个工作表中逐个复制数据,并将它们粘贴到不同的工作表中。下面是我的代码。但是,它显示“运行时错误1004:范围类的选择方法失败” Private子命令按钮1\u单击() '如果报告未完全填写,则停止 如果范围(“G28”)小于“1”,则 MsgBox(“请修改数量”) 如果结束 如果范围(“G28”)>=“1”,则 范围(“B28”)。选择 选择,复制 图纸(“订单列表”)。范围(“A1”)。偏移量(1,0)。选择 活动表。粘贴 如果结束 表(“订单列表”)。列(“A:D”)。自动调

我正在尝试从多个工作表中逐个复制数据,并将它们粘贴到不同的工作表中。下面是我的代码。但是,它显示“运行时错误1004:范围类的选择方法失败”

Private子命令按钮1\u单击()
'如果报告未完全填写,则停止
如果范围(“G28”)小于“1”,则
MsgBox(“请修改数量”)
如果结束
如果范围(“G28”)>=“1”,则
范围(“B28”)。选择
选择,复制
图纸(“订单列表”)。范围(“A1”)。偏移量(1,0)。选择
活动表。粘贴
如果结束
表(“订单列表”)。列(“A:D”)。自动调整
端接头

代码:“图纸(“订单列表”)。范围(“A1”)。偏移量(1,0)。选择”是突出显示的错误。我试图让它从A1表中选择A1表中的空白列,然后将B28的值粘贴到当前表中。请给我一些建议。非常感谢不要使用。选择或。激活。这就是造成你问题的原因。请参阅此说明,了解如何避免此问题以及原因:

以下是您的代码的更新版本,应该适合您:

Private Sub CommandButton1_Click()

    Dim wb As Workbook
    Dim wsSource As Worksheet
    Dim wsDest As Worksheet

    Set wb = ActiveWorkbook
    Set wsSource = wb.Sheets("Sheet1")  'Set to correct source worksheet name
    Set wsDest = wb.Sheets("Order List")

    'Stop if report not filled in fully
    If wsSource.Range("G28").Value < 1 Then
        MsgBox "Please Amend Quantity"
        Exit Sub
    End If

    wsSource.Range("B28").Copy wsDest.Range("A2")
    wsDest.Range("A:D").EntireColumn.AutoFit

End Sub
Private子命令按钮1\u单击()
将wb设置为工作簿
将wsSource设置为工作表
将wsDest设置为工作表
设置wb=ActiveWorkbook
将wsSource=wb.Sheets(“Sheet1”)设置为正确的源工作表名称
设置wsDest=wb.Sheets(“订单列表”)
'如果报告未完全填写,则停止
如果wsSource.Range(“G28”).值小于1,则
MsgBox“请修改数量”
出口接头
如果结束
wsSource.Range(“B28”)。复制wsDest.Range(“A2”)
wsDest.Range(“A:D”).entireclumn.AutoFit
端接头

订单列表是否偶然隐藏?尝试在
If-Range(“G28”)>=“1”
If的内部复制工作表(“订单列表”).Range(“A1”).Offset(1,0)而不是现在的工作表。您不能在工作表上选择一个不活动的单元格。非常感谢。但是,如果我再次单击其他行的按钮,它会粘贴到A3而不是替换A2吗?@JDing它不会。你的原始代码中没有这种逻辑。我鼓励您编辑我提供的内容以包含该功能。如果你陷入困境,就提出一个新问题。
Private Sub CommandButton1_Click()

    Dim wb As Workbook
    Dim wsSource As Worksheet
    Dim wsDest As Worksheet

    Set wb = ActiveWorkbook
    Set wsSource = wb.Sheets("Sheet1")  'Set to correct source worksheet name
    Set wsDest = wb.Sheets("Order List")

    'Stop if report not filled in fully
    If wsSource.Range("G28").Value < 1 Then
        MsgBox "Please Amend Quantity"
        Exit Sub
    End If

    wsSource.Range("B28").Copy wsDest.Range("A2")
    wsDest.Range("A:D").EntireColumn.AutoFit

End Sub