Excel宏 - 将Sheet2中的单元格范围复制到具有特定文本的单元格下面的工作表1中

时间:2013-06-24 14:10:37

标签: excel-vba vba excel

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

  1. 转到表2复制文本L3到R26的范围
  2. 然后返回到工作表1,在第L栏中搜索包含文本“Recess Size”的单元格
  3. 然后从包含“Recess Size”的单元格开始粘贴复制的Range
  4. 这需要重复直到列的结尾。
  5. 这是我使用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列时才会停止?代码中有什么不对的吗?

    希望有人可以提供帮助。

1 个答案:

答案 0 :(得分: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