#excel #vba
Вопрос:
Я хотел бы указать правильное время в последней строке столбца H, но когда я запускаю макрос, он также обновляет время в других строках того же столбца, есть ли способ избежать этого? Спасибо
Sub orologio()
Dim y As Integer
Dim LastRowF As Long
Worksheets(4).Activate
Sheets(4).Unprotect
ActiveCell.EntireRow.Select
With ActiveSheet
LastRowF = .Cells(.Rows.Count, "G").End(xlUp).Row
End With
For y = 2 To LastRowF
If Range("E" amp; y) Like "*" Then
Range(Cells(y, "H"), Cells(y, "H")).Interior.ColorIndex = 44
Range(Cells(y, "h"), Cells(y, "H")) = Format(Now, "dd/mm/yy hh:mm")
End If
Next y
End Sub
Ответ №1:
Пожалуйста, попробуйте, если это ваш желаемый результат.
Sub orologio()
Dim y As Integer
Dim LastRowF As Long
Worksheets(4).Activate
Sheets(4).Unprotect
With ActiveSheet
LastRowF = .Cells(.Rows.Count, "G").End(xlUp).Row
' Removed the FOR-NEXT because you said you only to update the last row.
If .Range("E" amp; LastRowF) Like "*" Then
.Range(Cells(LastRowF, "H")).Interior.ColorIndex = 44
.Range(Cells(LastRowF, "H")) = Format(Now, "dd/mm/yy hh:mm")
End If
End With
End Sub
Комментарии:
1. @John22, где вы хотите разместить текущую дату/время, только в последней строке? или для всего столбца H с условием, что столбец E имеет значение? Пожалуйста, уточните, что указано в колонках E, G и H.
2. Привет, посмотрел спокойнее, я не заметил своей ошибки, все работает нормально, спасибо.
Ответ №2:
Если вам нужно только в последней строке H:H, пожалуйста, используйте следующий код. Нет необходимости в активации, выборе или повторении:
Sub orologio()
Dim y As Integer, sh4 As Worksheet, LastRowG As Long
Set sh4 = Worksheets(4)
sh4.Unprotect
LastRowG = sh4.cells(sh4.rows.count, "G").End(xlUp).row
With .Range("H" amp; LastRowG)
.Interior.ColorIndex = 44
.value = Format(Now, "dd/mm/yy hh:mm")
End With
End Sub