sDate - это STRING, а не настоящая дата!
Преобразуйте вашу строку в дату, используя либо функцию CDate (), либо функцию DateValue ().
Однако в этом виде преобразования есть предостережение.Эти преобразования будут обрабатывать следующие структуры:
yyyy/mm/dd
yyyy/m/d
mm/dd/yyyy
m/d/yyyy
Они не будут правильно преобразованы
dd/mm/yyyy
d/m/yyyy
И избегать использования любого двухзначного года.
Я бы посоветовал использовать функцию DateSerial () для преобразования даты.
Что касается вашего кода, предполагая, что значения на вашем листе фактически являются датами (чтобы быть уверенным, просто выберите столбец и измените числоОтформатируйте в ОБЩИЕ. Если они являются реальными датами, у каждой будет отображаться ЧИСТЫЙ НОМЕР. Не забудьте нажать кнопку ОТМЕНА, чтобы вернуть свой формат даты)
Dim result As Boolean
If Worksheets("dates").Cells(1, 1).Value - Date > 30 Then
result = True
Else
result = False
End If