2013-12-16 60 views
0

我想创建一个宏,该列在H列下方并选择14个单元格。然后复制它们并通过“转置粘贴”粘贴它们,即它们从下一行中的行到列。然后它继续这样做直到它耗尽。这是我的代码到目前为止:在excel中循环一个宏

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开始。

我的问题是,超时运行它,它只是复制我已经突出显示的任何单元格,并将其粘贴到下一张表格中,而不选择所有我想要的单元格。

我该如何解决这个问题?

回答

1

'开头的行被视为注释,并被VBA忽略。因此您的代码选择范围(Range("Hx:Hy").Select)永远不会执行。

正在执行的第一行是Selection.Copy - 你猜对了 - 你复制当前选定单元格:)

除此之外,您还需要计算的范围内,为"Hx:Hy"将永远不会被解析为H313:H326。使用Range("H"&x&":H"&y)Range(Cells(x, 8), Cells(y, 8))

+0

感谢您的支持。只有几个问题:当我使用范围代码时,它给了我一个编译错误,为什么会发生这种情况?此外,这会自动循环? – Kaish

+0

请编辑您的问题并附上您的更新代码(但不要删除原来的代码)。 – sina

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 
+0

嗨,我试过了你的Cstr位,但它似乎只是复制整行H而不是我需要的单元,为什么? – Kaish