我想创建一个向下看H列并选择14个单元格的宏。然后复制它们并通过“转置粘贴”粘贴它们,即它们在下一张纸中从行到列。然后它继续这样做,直到它用完为止。到目前为止,这是我的代码:
Sub Macro5()
'
' Macro5 Macro
'
' Keyboard Shortcut: Ctrl+t
' Dim x as integer
' Dim y as integer
' x = 313
' y = x + 13
' Range("Hx:Hy").Select
Selection.Copy
Sheets("Sheet3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
'x = x + 14
End Sub
它应该从细胞H313开始。
我的问题是,evertime我运行它只是复制我突出显示的任何单元格并将其粘贴到下一页中,而不选择我想要的所有单元格。
我该如何解决这个问题?
答案 0 :(得分:1)
以'
开头的行被视为注释,并被VBA忽略。因此,永远不会执行选择范围(Range("Hx:Hy").Select
)的代码。
正在执行的第一行是Selection.Copy
- 您猜对了 - 复制您当前选择的单元格:)
此外,您需要计算范围,因为"Hx:Hy"
永远不会被解析为H313:H326
。
使用Range("H"&x&":H"&y)
或Range(Cells(x, 8), Cells(y, 8))
。
答案 1 :(得分:0)
因为您已经“注释掉了”您的第一部分代码,实际运行的第一行是
Selection.Copy
这就是为什么它只复制突出显示的内容。我想,如果你取消注意一切,你仍然会遇到一些问题,但我认为你的主要问题是:
Range("Hx:Hy").Select
应该是这样的:
Range("H" & CStr(x) & ":H" & CStr(y)).Select
Dim x as integer
Dim y as integer
x = 313
y = x + 13
Range("H" & CStr(x) & ":H" & CStr(y)).Select
Selection.Copy
Sheets("Sheet3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True