Excel 宏中的下标超出范围
这是我的密码:Excel 宏中的下标超出范围,excel,vba,Excel,Vba,这是我的密码: 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("
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
而不是像这样的语法:
Workbooks("A").Worksheets("Sheet1").Activate
使用类似于:
Workbooks("A.xlsm").Activate
Worksheets("Sheet1").Select
请先尝试设置工作簿和工作表的引用:
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
回答你的第二个问题 尝试替换:
Workbooks("C.xlsm").Worksheets("Sheet1").Activate
与:
Workbooks("C.xlsm").Activate
Worksheets("Sheet1").Activate
这背后的原因是:当您在一行中调用它时,您只想激活该工作簿中的工作表;而不是同时激活工作簿和工作表
在这种情况下,另一个可能导致问题的原因是,如果您在工作簿(“C.xlsm”).工作表(“Sheet1”)
中尝试复制时没有选择有效的区域。尝试添加单元格(1,1)。粘贴前选择
我将以一个不需要激活工作簿/工作表的更好的替代方案结束:
.Copy
方法有一个“destination”参数,可以设置为在任何打开工作簿的任何现有工作表中。例如,可以将最后4行替换为以下内容:
Range(Selection, Selection.End(xlDown)).Copy _
(Workbooks("C.xlsm").Worksheets("Sheet1").Range("A1"))
第一行的使用假设工作簿“A”应该打开,并且包含名为“Sheet1”的工作表。这对你来说是真的吗?我有一个名为A和Sheet1的Excel。我不知道那个Excel是否打开了。以上是我使用的代码谢谢你的回复。成功了。我还有一个疑问,所有使用的Excel工作表都应该是xlsm格式?包含宏的工作簿应该是.xlsm或.xls格式。我正在尝试在一个工作簿中复制两个工作簿值。现在获取最后一行的错误。工作簿(“A.xlsm”)。激活工作表(“Sheet1”)。选择范围(“B2:BG2”)。选择范围(Selection,Selection.End(xlDown))。选择选择。复制工作簿(“C.xlsm”)。工作表(“Sheet1”)。激活活动表。粘贴活动窗口。小滚动:45 lMaxRows=单元格(Rows.Count,“B”)。结束(xlUp).行范围(“B”和lMaxRows+1).选择工作簿(“AB.xlsm”).激活工作表(“Sheet1”).选择范围(“B2:BG2”).选择范围(Selection,Selection.End(xlDown)).选择Selection.copy工作簿(“C.xlsm”).工作表(“Sheet1”).Activate ActiveSheet.paste谢谢你Ramesh。你能帮我解决我发布的另一个错误吗