在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”)