这是一个简单的宏代码,可以将范围A2从一个工作簿复制到最后一行,然后粘贴到另一个工作簿中。我是个新手,在谷歌上搜索了很多页面,但都帮不上忙。密码贴在下面-
`
Sub TC_Creation_Sample()
Dim aPath As String, aFile As String, bFile As String
Dim FinalRow As Integer, x As Integer
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
aPath = "C:\temp\"
aFile = aPath & "Config"
bFile = aPath & "TC_Template"
Workbooks.Open (aFile)
Sheets("Config").Activate
'FinalRow = Cells(Rows.Count, "A").End(xlUp).Row
FinalRow = Worksheets("Config").Range("A2").End(xlDown)
For x = 2 To FinalRow
Worksheets("Config").Range("A" & x).Select
Selection.Copy
Workbooks.Open (bFile)
Worksheets("TestCases").Range("A" & x).Select
ActiveSheet.Paste
Next x
End Sub`
调试结果发现,代码成功复制粘贴A2值.然而,它抛出运行时错误9:下标超出范围。当工作表(“Config”).Range(“A”& x).Select在下一个x之后第二次运行时会发生错误,我不知道是什么导致了这个错误。好心,建议。
发布于 2017-01-03 11:56:31
这样更好吗?我将您的workbooks分配给了workbook variables,并取出了select和copy方法。我还添加了.Row,就像其他人建议的那样
Sub TC_Creation_Sample()
Dim aPath As String, aFile As String, bFile As String
Dim FinalRow As Long, x As Long
Dim wbA As Workbook, wbB As Workbook
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
aPath = "C:\temp\"
aFile = aPath & "Config"
bFile = aPath & "TC_Template"
Set wbA = Workbook.Open(aFile)
Set wbB = Workbooks.Open(bFile)
FinalRow = wbA.Worksheets("Config").Range("A2").End(xlDown).Row
'FinalRow = wbA.Worksheets("Config").Cells(Rows.Count, "A").End(xlUp).Row
For x = 2 To FinalRow
wbB.Worksheets("TestCases").Range("A" & x).Value = wbA.Worksheets("Config").Range("A" & x)
Next x
End Sub发布于 2017-01-03 11:49:58
您尚未将行号分配给FinalRow变量。尝试:
FinalRow = Worksheets("Config").Range("A2").End(xlDown).Row发布于 2017-01-03 11:58:12
有几点要提。
首先,Excel工作簿可以包含数百万行,但您的代码仅限于32,768行,因为您同时将FinalRow和X定义为整数。改用长整数(Dim表示长,FinalRow作为长),以防打开的工作簿中有超过32,000行。
现在讨论错误的原因。当您第二次通过For-Next循环运行代码时,系统会挂起,因为就其而言,活动工作簿是bFile,而且由于bFile上不存在Config选项卡(它在aFile上),它会与您收到的无用错误消息崩溃(因为它找不到正确的选项卡,因为它找错了位置)。
顺便说一句,每次bFile循环触发时,您的代码都会尝试打开( For..Next )。你每次都需要打开文件吗?当然,这只是一个把细节从一张纸复制到另一张纸的案例?
您还应该有一些错误处理。如果aFile不包含Config选项卡,或者bFile不包含TestCases选项卡,代码就会崩溃。我强烈建议您在处理这些实例时进行一些错误处理。
https://stackoverflow.com/questions/41442719
复制相似问题