2014-11-14 90 views
0

我正在使用以下宏將行從一個工作表移動到另一個工作表。這部分工作就像一個魅力。我想弄清楚的是如何做到這一點,而不會影響我的條件格式。Excel宏根據單元格標準移動行而不移動格式化

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

離開間隙(S)在以前移動一排排。

+0

將您上傳的圖片鏈接到某些共享網站(如保管箱),然後有人可以附上您的問題。 – ZAT 2014-11-16 10:46:17

+0

您是否試圖在目標或源行中保留條件格式? – peege 2014-11-16 23:55:59

+0

我試圖在「Open_Log」上保留「Open_Log」的格式,並且我希望「Completed」上的格式不被更改,因爲它與「Open_Log」的格式不同。另外,感謝您的快速回復 – Boyle 2014-11-17 20:59:02

回答

0

似乎沒有辦法在移動後重置條件格式。 (問題在SO之前幾次被提及過)。

0

我想你可能想要以稍微不同的方式重新考慮你想要做的事情。

而不是刪除整行,你可以清除它。

此外,不是複製整行,而是通過循環很容易地設置每個單元格的值。這將保留單元格中的格式。我相信還有其他方法可以做到這一點,但我都贊成向人們展示如何運行簡單的循環,而不是從宏中記錄剪切和粘貼。

試着把這一點代碼放到你已經有的東西里。

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 
相關問題