请参阅下面的代码。
我在sheet7
的A到R列中有一个数据列表。
我需要将行1列A-F中的数据复制到sheet6的前12行,从E行开始。
执行此操作后,我需要将sheet7
中的数据从第1行G-R列转换为第6列到第Q列(第1-12行)。
提前致谢。问题是在运行代码时遇到“运行时错误13,类型不匹配”。当使用F8定位问题时,我无法看到它发生的位置。我通过了代码的msgbox部分。
这需要重复多次才能完成所有数据。
Sub copy1()
Dim i As Long
Dim j As Long
j = 2
MsgBox (j)
For i = 2 To 1000
Worksheets(Sheet7).Activate
Range(Cells(i, 1), Cells(i, 6)).Select
Selection.copy
Worksheets(Sheet6).Activate
Range(Cells(j, 5), Cells(j + 11, 5)).PasteSpecial
Worksheets(Sheet7).Activate
Range(Cells(i, 7), Cells(i, 18)).Select
Selection.copy
Worksheets(Sheet6).Activate
Range(Cells(j, 17).Address).PasteSpecial Transpose:=True
j = j + 12
Next i
End Sub
答案 0 :(得分:0)
代码的问题是Range
需要两个单元格或单元格的地址才能工作。而且您需要Range
作为PasteSpecial部分。看看你自己,以下内容如何不起作用:
Sub TestMe()
Range(Cells(1, 1)).Select
End Sub
但这样可以很好地工作(所有选择A1
):
Sub TestMe()
Range(Cells(1, 1), Cells(1, 1)).Select
Range(Cells(1, 1).Address).Select
Range("A1").Select
Range([A1].Address).Select
Cells(1, 1).Select
Cells(1).Select
[A1].Select
End Sub
因此,更改您的代码:
Range(Cells(j, 17)).PasteSpecial Transpose:=True
要:
Range(Cells(j, 17).Address).PasteSpecial Transpose:=True
更有趣的话题:
答案 1 :(得分:0)
您的代码似乎存在一些潜在问题。这是它的改进版本。既然你没有提到确切的问题,看看这个是否有效..
Sub copy1()
Dim i As Long
Dim j As Integer
j = 2
MsgBox (j)
For i = 2 To 1000
Worksheets(Sheet7).Range(Cells(i, 1), Cells(i, 6)).copy
Worksheets(Sheet6).Range(Cells(j, 5), Cells(j + 11, 5)).PasteSpecial xlPasteValues
Worksheets(Sheet7).Range(Cells(i, 7), Cells(i, 18)).copy
Worksheets(Sheet6).Range(Cells(j, 17),Cells(j, 17)).PasteSpecial xlPasteValues Transpose:=True
j = j + 12
Next i
Application.CutCopyMode = False
End Sub