Мой код находится в VBA и обновляет значение ячейки на основе двух критериев. Я довольно подробно прокомментировал свой код, поэтому сначала вставлю его ниже. Я изменил комментарии, добавив еще два апострофа, чтобы было немного легче определить разницу между комментариями и кодом на этой платформе.
Sub HighlightValues()
'''Shortcut key: ctrl + w
'''Highlights values of corresponding left-most cell, if two conditions are met:
'''The part is in "L" class and all of the rightmost cells are empty
Dim ws As Worksheet
Dim i As Long, lastrow As Long, lastcolumn As Long, c As Long, d As Long, j As Long, count As Long, k As Long, report As Long
Set ws = Sheets("QAP")
lastrow = ws.Cells(Rows.count, 1).End(xlUp).Row
lastcolumn = ws.Cells(1, ws.Columns.count).End(xlToLeft).Column
'''Searches column titles for "Analysis Task Count"
'''where it will start searching for filled boxes on each row
For i = 1 To lastrow
If InStr(ws.Cells(1, i), "Analysis Task Count") Then
'''c is the number of column that Analysis Task Count is in
c = i - 1
End If
Next
'''Searches column titles for "Required by RPC"
'''where it will search for whether the part is "L' or not
For d = 1 To lastcolumn
If InStr(ws.Cells(1, d), "Required by RPC") Then
'''k is the number of column that Required by RPC is in
k = d
End If
Next d
'''For each row that part data is in
For i = 11 To lastrow
count = 0
'''If any cells past Analysis Task Count are filled, remember that
For j = c To lastcolumn
If Not IsEmpty(ws.Cells(i, j)) Then
count = 1
End If
Next j
'''If the stage is L and all the cells are empty for that row
If Cells(i, k).Value = ("L") And count = 0 Then
'''Highlight the first box in green
Cells(i, 1).Interior.Color = RGB(102, 255, 102)
Else
'''Or if thats not true, then make that box clear
Cells(i, 1).Interior.Color = xlNone
report = report + 1
End If
Next i
MsgBox (report)
End Sub
Чтобы провести вас по коду (за исключением пробелов, некоторое форматирование не было перенесено), код сначала ищет номер столбца двух критических столбцов, а затем в последнем цикле for для каждой строки он ищет два критерии соблюдены. Если критерии соблюдены, ячейка становится зеленой, если нет, она заполняется пустой. Я потратил около часа на подтверждение того, что значения, возвращаемые k и c, являются правильным номером столбца: я не думаю, что это проблема. Кроме того, когда я устанавливаю счетчик, чтобы увидеть, сколько раз код проходит последний цикл for и каждый оператор if, я получаю правильное количество циклов.
Это очень расстраивает, единственная странность в том, что код выполняется почти мгновенно, так что задержки нет вообще. И, конечно же, заполнение ячейки не меняется. Чтобы проверить это, я запустил код, заполняющий ячейки оранжевым цветом, и никаких изменений в ячейках не произошло.
Спасибо за любую помощь, которую я могу получить!