在Excel VBA中复制行

在Excel VBA中复制行,excel,vba,Excel,Vba,我正试图从ActiveSheet复制三个特定行,并希望基于ColorIndex粘贴/插入这三个范围 Dim last1Row As Long, J As Long Set ws = ThisWorkbook.Sheets("sheet1") 'set you data sheet here last1Row = ws.Cells(Rows.Count, "M").End(xlUp).Row 'get the last row in column A For J = last1Row To

我正试图从
ActiveSheet
复制三个特定行,并希望基于
ColorIndex
粘贴/插入这三个范围

 Dim last1Row As Long, J As Long

Set ws = ThisWorkbook.Sheets("sheet1")  'set you data sheet here
last1Row = ws.Cells(Rows.Count, "M").End(xlUp).Row  'get the last row in column A
For J = last1Row To 7 Step -1    'loop from last row to row 2
    If ws.Range("M" & J).Interior.ColorIndex = 37 Then
      ws.Range("M" & J + 2).EntireRow.Insert
        ws.Rows("4:4").Copy
        ws.Range("M" & J + 2).EntireRow.Insert
          ws.Rows("3:3").Copy
         ws.Range("M" & J + 2).EntireRow.Insert
         ws.Rows("1:1").Copy

         ws.Range("M" & J + 2).EntireRow.Insert

       ws.Rows("5:5").Copy


    End If
Next J

试试这个:

Dim last2Row As Long
Dim J As Integer

Set ws = ThisWorkbook.Sheets("sheet1")

last2Row = ws.Cells(Rows.Count, "M").End(xlUp).Row

For J = last2Row To 7 Step -1
    If ws.Range("M" & J).Interior.ColorIndex = 37 Then

        ws.Range("M" & J + 2).EntireRow.Insert
        ws.Rows("3:4").Copy
        ws.Range("M" & J + 2).EntireRow.Insert
        ws.Rows("1:1").Copy
        ws.Range("M" & J + 2).EntireRow.Insert
        ws.Rows("5:5").Copy


    End If
Next J

试试这个:

Dim last2Row As Long
Dim J As Integer

Set ws = ThisWorkbook.Sheets("sheet1")

last2Row = ws.Cells(Rows.Count, "M").End(xlUp).Row

For J = last2Row To 7 Step -1
    If ws.Range("M" & J).Interior.ColorIndex = 37 Then

        ws.Range("M" & J + 2).EntireRow.Insert
        ws.Rows("3:4").Copy
        ws.Range("M" & J + 2).EntireRow.Insert
        ws.Rows("1:1").Copy
        ws.Range("M" & J + 2).EntireRow.Insert
        ws.Rows("5:5").Copy


    End If
Next J

这是代码吗?还是显示出一个错误?这是在做工作,但速度慢得令人痛苦。正在考虑某种循环,但由于我指定了行,因此无法生成任何循环请先整理。请从同构代码缩进开始。删除打字错误,例如“last1Row”与“last1Row”/A列或M列的最后一行?请使用
选项Explicit
作为每个模块中的第一个代码行。使用
.Cells(J,“M”)代替
.Range(“M”&J)
ws.Rows(3)`代替
ws.Rows(“3:3”)
这段代码在起作用吗?还是显示出一个错误?这是在做工作,但速度慢得令人痛苦。正在考虑某种循环,但由于我指定了行,因此无法生成任何循环请先整理。请从同构代码缩进开始。删除打字错误,例如“last1Row”与“last1Row”/A列或M列的最后一行?请使用
选项Explicit
作为每个模块中的第一个代码行。使用
.Cells(J,“M”)代替
.Range(“M”&J)
ws.Rows(3)`代替
ws.Rows(“3:3”)