Excel 如果单元格颜色为绿色,则从表1复制一行并将其粘贴到表2中

Excel 如果单元格颜色为绿色,则从表1复制一行并将其粘贴到表2中,excel,vba,Excel,Vba,我编写这段代码是为了在单元格颜色为绿色时将数据从Sheet1复制到Sheet2(在条件格式设置后,它变为绿色)。但它给了我错误的颜色条件。有什么建议吗 Private Sub CommandButton1_Click() a = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To a If Worksheets("Sheet1").Interior.ColorIndex = 14 Then

我编写这段代码是为了在单元格颜色为绿色时将数据从Sheet1复制到Sheet2(在条件格式设置后,它变为绿色)。但它给了我错误的颜色条件。有什么建议吗

Private Sub CommandButton1_Click()
a = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To a
    If Worksheets("Sheet1").Interior.ColorIndex = 14 Then
        Worksheets("Sheet1").Rows(i).Copy  
        Worksheets("Sheet2").Activate
        b = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
        Worksheets("Sheet2").Cells(b + 1, 1).Select
        ActiveSheet.Paste
        Worksheets("Sheet1").Activate
    End If    
Next
Application.CutCopyMode = False
ThisWorkbook.Worksheets("Sheet1").Cells(1, 1).Select
End Sub


很少考虑的事情,for循环将遍历SeET1的列A,并在下一个可用行中将完整行复制到SeET2,如果满足标准:

Private Sub CommandButton1_Click()
a = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To a
    b = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    If Worksheets("Sheet1").Cells(i, "A").Interior.ColorIndex = 14 Then
        Worksheets("Sheet1").Rows(i).Copy
        Worksheets("Sheet2").Range("A" & b).PasteSpecial xlPasteAll
        Application.CutCopyMode = False
    End If
Next i
End Sub
你设定

Application.CutCopyMode = False
因此缓冲区中没有要粘贴的内容。将该行移动到粘贴后

你最好不要复制和粘贴。复制/粘贴时,会弄脏用户的复制/粘贴缓冲区。通常最好直接指定值和其他方面:

myTargetRange.Value = mySourceRange.Value
myTargetRange.Formula = mySourceRange.Formula
myTargetRange.RowHeight = mySourceRange.RowHeight

等等。

如果您正在检查整个
工作表1的
内部
,您可能需要将
如果工作表(“工作表1”).Cells.Interior.ColorIndex=14
放在那里。谢谢!!它修复了错误,但代码仍然不起作用。我的意思是,它不是将数据从一张纸复制到另一张纸。有什么解决办法吗?把
工作表(“Sheet1”).行(i).内部.ColorIndex
工作表(“Sheet1”).单元格(i,1).内部.ColorIndex
放在那里谢谢你的回复。此代码给出了一个错误。“粘贴range类的特殊方法失败”。@Nagendra我现在已经更新了我的响应,它现在应该适合您了…:)