|
本帖最后由 jok22 于 2018-6-26 15:21 编辑
这里有两个程序,第一个是将两个不同工作本间的数据进行复制,将当前单元格分别选中源工作本中需要复制的内容开始单元格(B1),目标工作本中选中需要复制到的开始单元格(B1),运行正确如一图;而第二个程序源工作本选中(B1)单元格,目标工作本中选中(B1)单元格,运行错误,如二图。
请问第二个程序如何修改才可以成为第一个的类型?谢谢!
工作本间复制
- Sub workbook()
- Dim i&, j&, x&, y&, x1&, y1&, m&, n&, p&, q&, p1&, q1&, myName, myName1, a
- 'Application.ScreenUpdating = False
- n = 10 '循环次数
- Set myName = Windows("1.xlsx") '源工作本
- Set myName1 = Windows("2.xlsx") '目标工作本
- p = 1: q = 0 'p为源工作本间隔行数,q为源工作本间隔列数
- p1 = 1: q1 = 0 'p为目标工作本间隔行数,q为目标工作本间隔列数
- x = 1: y = 1
- x1 = 1: y1 = 1
- For i = 1 To n
- Set a = myName.Selection.Cells(x, y)
- myName1.Selection.Cells(x1, y1) = a.Value
- x = x + p: y = y + q
- x1 = x1 + p1: y1 = y1 + q1
- Next i
- End Sub
复制代码 工作本间复制结果
工作表间复制
- Sub sheet()
- Dim i&, j&, x&, y&, x1&, y1&, m&, n&, p&, q&, p1&, q1&, myName, myName1, a
- n = 1000 '循环次数
- Set myName = ThisWorkbook.Sheets("Sheet1") '源工作表
- Set myName1 = ThisWorkbook.Sheets("Sheet2") '目标工作表
- p = 1: q = 0 'p为源工作表间隔行数,q为源工作表间隔列数
- p1 = 1: q1 = 0 'p为目标工作表间隔行数,q为目标工作表间隔列数
- x = 1: y = 1
- x1 = 1: y1 = 1
- For i = 1 To n
- Set a = myName.Cells(x, y)
- myName1.Cells(x1, y1) = a.Value
- x = x + p: y = y + q
- x1 = x1 + p1: y1 = y1 + q1
- Next i
- End Sub
复制代码
工作表间复制结果 代码做了如下修改,达到了和第一个程序一样的效果。 - Sub Macro1()
- Dim i&, j&, x&, y&, x1&, y1&, m&, n&, p&, q&, p1&, q1&, myName, myName1, a
- n = 10 '循环次数
- Set myName = ThisWorkbook.Sheets("Sheet1") '源工作本
- Set myName1 = ThisWorkbook.Sheets("Sheet2") '目标工作本
- p = 1: q = 0 'p为源工作本间隔行数,q为源工作本间隔列数
- p1 = 1: q1 = 0 'p为目标工作本间隔行数,q为目标工作本间隔列数
- myName.Select
- x = ActiveCell.Row: y = ActiveCell.Column
- myName1.Select
- x1 = ActiveCell.Row: y1 = ActiveCell.Column
- For i = 1 To n
- Set a = myName.Cells(x, y)
- myName1.Cells(x1, y1) = a.Value
- x = x + p: y = y + q
- x1 = x1 + p1: y1 = y1 + q1
- Next i
- End Sub
复制代码
|
|