这是我的代码:
Workbooks("A").Worksheets("Sheet1").Activate
Range("B2:BG2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.copy
Workbooks("C.xlsm").Worksheets("Sheet1").Activate
ActiveSheet.Paste
我在第一行收到了下标超出范围的错误。
现在错误在最后一行:
Workbooks("A.xlsm").Activate
Worksheets("Sheet1").Select
Range("B2:BG2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.copy
Workbooks("C.xlsm").Worksheets("Sheet1").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=45
lMaxRows = Cells(Rows.Count, "B").End(xlUp).Row
Range("B" & lMaxRows + 1).Select
Workbooks("AB.xlsm").Activate
Worksheets("Sheet1").Select
Range("B2:BG2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.copy
Workbooks("C.xlsm").Worksheets("Sheet1").Activate
ActiveSheet.Paste
答案 0 :(得分:0)
而不是语法:
Workbooks("A").Worksheets("Sheet1").Activate
使用类似的东西:
Workbooks("A.xlsm").Activate
Worksheets("Sheet1").Select
答案 1 :(得分:0)
首先尝试设置工作簿和工作表的参考:
Dim wb1 As Workbook
Dim ws1 As Worksheet
Dim wb2 As Workbook
Dim ws2 As Worksheet
Set wb1 = Workbooks("Book1")
Set ws1 = wb1.Sheets(1)
Windows(2).Activate
Set wb2 = ActiveWorkbook
Set ws2 = wb2.Sheets(1)
ws1.Activate
ws1.Range("B2:BG2").Select
Selection.Copy
wb2.Activate
ws2.Activate
ActiveSheet.Paste
答案 2 :(得分:0)
回答你的第二个问题。
尝试更换:
Workbooks("C.xlsm").Worksheets("Sheet1").Activate
with:
Workbooks("C.xlsm").Activate
Worksheets("Sheet1").Activate
背后的原因是:当你在一行中调用它时,你只想激活该工作簿中的工作表;而不是激活工作簿和工作表。
在这种情况下可能造成问题的另一个原因是,当您尝试复制时,Workbooks("C.xlsm").Worksheets("Sheet1")
中没有选择有效区域。在粘贴之前尝试添加Cells(1,1).Select
。
我将以更好的替代品结束,不需要激活工作簿/工作表:
.Copy
方法有一个“destination”参数,可以设置为在任何打开的工作簿的任何现有工作表中。例如,您可以使用以下内容替换最后4行:
Range(Selection, Selection.End(xlDown)).Copy _
(Workbooks("C.xlsm").Worksheets("Sheet1").Range("A1"))