Скрыть строки на основе общего времени между двумя датами - PullRequest
0 голосов
/ 01 декабря 2018

Мне бы хотелось, чтобы 3 строки отображались только в том случае, если разница между датой вступления в силу и датой окончания превышает 6 месяцев.Я знаю, как скрыть строки и как работает datediff, но не знаю, как все это объединить.Мне также нужно, чтобы код запускался сразу после ввода даты. В настоящее время он запускается только тогда, когда я выбираю «запустить» для подпрограммы

. Это код, который у меня есть в настоящее время, и он работает, но он будет работать после запуска руны.макрос .... Мне нужно, чтобы это произошло сразу после ввода даты

Представить макрос, но работает только при "запуске"

Sub Priority()

If Range("K68") > DateSerial(Year(Range("H68")), Month(Range("H68")) + 6, Day(Range("H68"))+1) Then
        Worksheets("Sheet1").Range("72:74").EntireRow.Hidden = False
    Else
        Worksheets("Sheet1").Range("72:74").EntireRow.Hidden = True

 End If

If Range("K68") > DateSerial(Year(Range("H68")), Month(Range("H68")) + 6, Day(Range("H68"))+1) Then
        Worksheets("Sheet1").Range("75:76").EntireRow.Hidden = True
    Else
        Worksheets("Sheet1").Range("75:76").EntireRow.Hidden = False
    End If
End Sub

1 Ответ

0 голосов
/ 03 декабря 2018

Поскольку вы не предоставили больше информации, чем тот факт, который хотите объединить DateDiff() и Range.Hidden, я приведу вам пример для этого.

If DateDiff("m", Cells(1, 1), Cells(1, 2)) >= 6 Then
    Rows(2).Hidden = False
    Rows(3).Hidden = False
    Rows(4).Hidden = False
Else
    Rows(2).Hidden = True
    Rows(3).Hidden = True
    Rows(4).Hidden = True
End If

Это скрыло быстроки от 2 до 3, если DateDiff() возвращает значение, большее или равное 6 для дат в первой строке и первых двух столбцах.Если значение меньше, оно сделает их видимыми.Конечно, вы можете легко редактировать значения столбцов и строк в соответствии со своими потребностями.

Cells(1, 1) вернет значение (в вашем случае дату) ячейки в первой строке и первом столбце, Cells(1, 2) дляпервый ряд и второй столбец.

Обратите также внимание, что DateDiff() вернет 6 независимо от дня месяца, если первый параметр - "m", а разница месяцев - 6.Если вы хотите быть ближе к 6 месяцам, я бы предложил вместо этого использовать "d" в течение нескольких дней и установить условие >= 180 или что-то еще, более соответствующее вашим потребностям.

...