0

我需要做的是以下使用 Excel 宏。

  1. 转到工作表 2 复制文本 L3 到 R26 的范围
  2. 然后返回工作表 1 在 L 列中搜索包含文本“Recess Size”的单元格
  3. 然后粘贴复制的范围从包含“凹槽大小”的单元格开始
  4. 这需要重复直到列结束。

这是我使用 Microsoft 支持页面提出的代码

Dim x As Integer
NumRows = Range("L2", Range("L600").End(xldown)).Rows.Count
Range("L2").Select
For x = 1 To NumRows
    Sheets("Sheet2").Select
    Range("A1:G24").Select
    Selection.Copy
    Sheets("Sheet1").Select
    Cells.Find(What:="Recess Size", After:=ActiveCell,  LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows,  SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate
    ActiveSheet.Paste
    ActiveCell.Offset(1, 0).Select
Next                

不幸的是,这进入了一个连续的循环,直到我按下 ESC 并且每一次发生的动作都粘贴到左侧的 1 列之前,它才会停止?代码中有什么不正确的吗?

希望有人可以提供帮助。

4

1 回答 1

0

Activesheet 和 Activecell 太模糊了。

如果您使用的是多页程序,最好指定您正在使用的工作表或使用“With Sheets("Sheet1")" 来表示 "Sheet1" 的倍数。

这可能不是剪切和粘贴,但你明白我的意思:

Sub Sheetspractice()
    NumRows = Sheets("Sheet1").Range("L2:L" & Rows.Count).End(xlup).Row
    Sheets("Sheet1").Range("L2").Select
    For x = 1 To NumRows
        Sheets("Sheet2").Range("A1:G24").Select
        Selection.Copy
        Sheets("Sheet1").Cells.Find(What:="Recess Size", After:=ActiveCell,  LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows,  SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        Sheets("Sheet1").Paste
        Sheets("Sheet1").Range("A1").Offset(1, 0).Select
    Next
End Sub
于 2013-06-24T18:06:20.337 回答