Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel宏根据单元格条件移动行,而不移动格式_Excel_Formatting_Conditional Formatting_Vba - Fatal编程技术网

Excel宏根据单元格条件移动行,而不移动格式

Excel宏根据单元格条件移动行,而不移动格式,excel,formatting,conditional-formatting,vba,Excel,Formatting,Conditional Formatting,Vba,我使用以下宏将行从一张图纸移动到另一张图纸。这部分很有魅力。我想弄明白的是如何在不影响条件格式的情况下实现这一点 Sub MoveCompleted() Dim h As Variant Dim endrow As Integer Dim OL As Worksheet, Cmp As Worksheet Set OL = ActiveWorkbook.Sheets("Open_Log") Set Cmp = ActiveWorkbook.Sheets

我使用以下宏将行从一张图纸移动到另一张图纸。这部分很有魅力。我想弄明白的是如何在不影响条件格式的情况下实现这一点

Sub MoveCompleted()

    Dim h As Variant
    Dim endrow As Integer
    Dim OL As Worksheet, Cmp As Worksheet

    Set OL = ActiveWorkbook.Sheets("Open_Log")
    Set Cmp = ActiveWorkbook.Sheets("Completed")

    endrow = OL.Range("A" & OL.Rows.Count).End(xlUp).Row

    For h = 2 To endrow
        If OL.Cells(h, "H").Value = "COMPLETE" Then
           OL.Cells(h, "H").EntireRow.Cut Destination:=Cmp.Range("A" & Cmp.Rows.Count).End(xlUp).Offset(1)
        End If
    Next
End Sub
我有图像要发布,包括我的格式,但我的代表在此网站上太低,无法发布它们

快速示例:

在运行宏之前,应用于的内容如下:=$A$12:$I$100000 运行宏后,它看起来像:=$A$12:$I$63,$A$68:$I$100000


保留先前移动的行所在的间隙。

似乎在移动后,除了重置条件格式之外,没有其他方法。这个问题以前已经被提到过好几次了。

我想你们可能想重新考虑一下,用一种稍微不同的方式来处理它

您可以将其清除,而不是删除整行

此外,您可以使用循环非常轻松地设置每个单元格的值,而不是复制整行。这将保留单元格中的格式。我相信还有其他方法可以做到这一点,但我完全赞成向人们展示如何运行简单循环,而不是录制宏中的剪切和粘贴

试着把这段代码放进你已经拥有的东西中

LastCompletedRow = Sheets("Completed").Range("A" & Rows.Count).End(xlUp).Row
LastCol = Sheets("Open_Log").Cells(1, Columns.count).End(xlToLeft).Column     'Get the last column on the source.

    For h = 2 To endrow
        If OL.Cells(h, "H").Value = "COMPLETE" Then
           For col = 1 To LastCol
               Sheets("Completed").Cells(LastCompletedRow, col).Value = Sheets("Open_Log").Cells(h, col).Value
               Sheets("Open_Log").Cells(h, col).Value = ""    'Clear the original cell you just copied.
           Next col
        End If
    Next

将上传图像的链接发布到dropbox等共享网站,然后有人可以将这些链接与您的问题一起附加。您是否试图在目标中保留条件格式,还是源行?我正在尝试在Open_Log上保留Open_Log的格式,我希望不会更改Completed上的格式,因为它与Open_Log的格式不同。另外,感谢您的快速回复