2016-10-05 5 views
0

Я работаю над листом отслеживания запуска Excel, который получает большую часть своей информации из внешней базы данных. У меня есть код, который сравнивает два листа, чтобы добавить недостающую информацию из выписки базы данных в мой лист отслеживания запуска.Добавить условное форматирование в обновленные ячейки

Этот код сравнивает, если три условия совпадают между двумя листами, и если это так, он заменяет строку (от столбца E до столбца AQ), если она не добавляет строку в конце листа отслеживания запуска.

Как добавить условное форматирование к обновленным ячейкам?

Это код, который у меня есть до сих пор!

Option Explicit 
Public Const FM As String = "Launch Tracker" 
Public Const lidebFM As Byte = 3 
Public Const FL As String = "LAT - Master Data" 
Public Const lidebFL As Byte = 3 
Public Const co1 As Byte = 8 ' colonne H 
Public Const co2 As Byte = 15 ' colonne O 
Public Const co3 As Byte = 17 ' colonne Q 
Public Sub Update() 
Dim lifinFL As Long, liFL As Long 
Dim lifinFM As Long, liFM As Long 
Dim obj As Object 
Dim V1 As String, V2 As String, V3 As String 
With Sheets(FL) 
    ' dernière ligne feuille FL 
    lifinFL = .Cells.Find("*", , , , xlByRows, xlPrevious).Row 
    ' boucle sur les lignes de FL 
    For liFL = lidebFL To lifinFL 
    ' dernière ligne de FM 
    lifinFM = Sheets(FM).Cells.Find("*", , , , xlByRows, xlPrevious).Row 
    ' comparaison des Item ID 
    V1 = .Cells(liFL, co1).Value 
    ' recherche de V1 dans FM colonne co1 
    Set obj = Sheets(FM).Columns(co1).Find(V1, , , xlWhole) 
    ' si pas trouve lifm = 1° ligne dispo dans FM pour copie 
    If obj Is Nothing Then 
     liFM = lifinFM + 1 
    ' sinon V1 est trouve à la ligne liFM 
    Else 
     liFM = obj.Row 
     ' compraison de MARKET et SAP 
     V2 = .Cells(liFL, co2).Value 
     V3 = .Cells(liFL, co3).Value 
     ' si identiques on garde liFM = liobj pour ecrasement 
     If V2 = Sheets(FM).Cells(liFM, co2).Value And V3 = Sheets(FM).Cells(liFM, co3).Value Then 
     ' rien 
     Else 
     ' si non identiques lifm = 1° ligne dispo dans FM pour copie 
     liFM = lifinFM + 1 
     End If 
    End If 
    ' copie de la ligne liFL dans FM à la ligne liFM 
    '.Rows(liFL).Copy Sheets(FM).Cells(liFM, 1) 
    'prendre juste les cellules à la place de la ligne 
    .Range(.Cells(liFL, 5), .Cells(liFL, 43)).Copy Sheets(FM).Cells(liFM, 5) 
    Next liFL 
End With 

End Sub 
+0

Лучше всего показать, что вы сделали в первую очередь. Вы можете легко форматировать ячейку как часть процесса обновления. –

+0

Только что понял, что я испортил форматирование кода, но вот оно ... Но поскольку я копирую gorup из ячеек, как я могу различить тех, кто был обновлен, и тех, у кого этого нет? – MopMop

ответ

1

Если картина обновленной линии в различных костюмах цвета вы, вы можете использовать что-то же просто, как это (делает линию желтого цвета):

Range("E" & currLine & ":AQ" & currLine).Interior.Color = 65535 

Конечно перед запуском цикла обновления данных вы должны нарисовать весь лист в один цвет (белый или любой другой).

+0

Да, но проблема в том, что в строке есть много изменений, и я хотел бы знать, можно ли поместить другое форматирование только на ячейки, значение которых изменилось. – MopMop

+0

Тогда вместо линейного диапазона вы можете использовать одну ячейку, изменяя ее форматирование сразу после изменения его значения (и все еще иметь индексы в руке). –

+0

Но я не понимаю, как реализовать это, поскольку я уже меняю строку, это означало бы, что мне пришлось бы полностью переписать код для использования отдельных ячеек.? – MopMop

Смежные вопросы