В будущем взгляните на rules of etiquette, чтобы ваши вопросы были интересными и заманчивыми для ответа. По вашему вопросу, будет более эффективным иметь дело с диапазонами, а не с отдельными ячейками с датами в них. Цикл For Each...Next
может проходить через каждую ячейку диапазона. Затем петля If...Then...Else...End If
может принимать решение при различных условиях. Метод Offset(0, 1)
может использоваться внутри цикла If...Then
для размещения результатов в столбце справа. Следующий код делает то, что вы, кажется, задаются вопросом:
Sub Check()
' Declare your variables
Dim MyDates As Range
Dim result As String
' First, grab all the values in the J2:JX column, where
' X can be any number of dates you choose. Note that
' you must "Set" Object variables, but you must "Dim"
' other types of variables.
Set MyDates = Range(Range("J2"), Range("J2").End(xlDown))
' Loop through every cell in the dates column and give the
' offset column (column K) a string value if the condition
' is met.
Dim Cell As Range
For Each Cell In MyDates
If Cell >= Date Then
result = "Future"
Cell.Offset(0, 1).Value = result
Else
result = "Now (or past)"
Cell.Offset(0, 1).Value = result
End If
Next Cell
End Sub
метод End(xlDown)
эмулирует выбора ячейки и нажав Ctrl + стрелка вниз. Также обратите внимание, что этот код вообще не обрабатывает ошибки. Например, если вы случайно введите дату как текст, процедура приведет к неправильному результату. Кроме того, в зависимости от времени ввода данных вы можете получить путаные результаты. Я приложил изображение результатов в Excel здесь:
![My results in Excel with Form Control to execute VBA.](https://i.stack.imgur.com/toUPO.jpg)
Excel VBA была вокруг в течение долгого времени. Поэтому [MS Documentation] (https://msdn.microsoft.com/en-us/library/ezk76t25.aspx) на самом деле довольно хорошо. Я рекомендую использовать структуру «For Loop». – OldUgly
Еще лучше: не используйте VBA для этого, но в ячейках формулы. – trincot
Спасибо Teylyn, я думаю, что ваш код охватывает только J1 Cell, а не до J10. Цените свой ответ. Ответ Shai Rado ниже входит в цикл формулы. – quwi