在excel中循环一个宏

时间:2013-12-16 12:20:01

标签: excel excel-vba loops vba

我想创建一个向下看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我运行它只是复制我突出显示的任何单元格并将其粘贴到下一页中,而不选择我想要的所有单元格。

我该如何解决这个问题?

2 个答案:

答案 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