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