Как извлечь дату и вычесть ее из сегодняшней даты?

#excel #vba

#excel #vba

Вопрос:

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

Я добавил много материала, потому что в различных сообщениях на форуме другим людям сообщается, что у них отсутствует явный параметр или переменные не определены, но я все еще не могу запустить только это.

Сообщение об ошибке

Ошибка компиляции: переменная не определена.

Я нарисовал стрелку в своем коде там, где она должна быть <-----------

 Private Sub CommandButton1_Click()
    calcDate
End Sub

Public Function calcDate() '<-------------- This is where the error is    
    Dim RegDate As Date
    Dim UpDate As Date

    Set RegDate = Sheets("2019").Cells(o, 17)
    Set UpDate = Sheets("2018").Cells(n, 2)

    answer = DateDiff("m", RegDate, UpDate)

    Sheets("Table").Cells(b, 2) = answer
End Function
  

Комментарии:

1. Set используется только при назначении объектов. Я не думаю, что они нужны для дат.

2. Привет и добро пожаловать в Stack Overflow. Вы описали, что вы хотите сделать, и поделились имеющимся у вас на данный момент кодом, что замечательно, но вы четко не указали, как ваш код не дотягивает или не выполняет то, что вы хотите, чтобы он делал. Не могли бы вы, пожалуйста, отредактировать эту информацию в вопросе? Например, если выдается ошибка, пожалуйста, сообщите нам об этом и включите сообщение об ошибке.

Ответ №1:

Метод Cells имеет синтаксис Cells (строка, столбец). Сначала вы используете столбец, и этот столбец также должен быть заключен в двойные кавычки, иначе он будет обрабатываться как переменная, а вы их не объявляли.

Cells(2,"n") будет работать.

Кроме того, вы не объявили переменную answer .

Наконец, вам не нужно Set присваивать значение переменной date.

 Option Explicit

Private Sub CommandButton1_Click()
    calcDate
End Sub

Public Function calcDate()

Dim RegDate As Date
Dim UpDate As Date
Dim answer As Integer

RegDate = Sheets("2019").Cells(17, "O")
UpDate = Sheets("2018").Cells(2, "N")

answer = DateDiff("m", RegDate, UpDate)

Sheets("Table").Cells(2, "B") = answer

End Function
  

Комментарии:

1. Я выполнил эти действия, но по-прежнему возникает проблема с этой строкой. Спасибо за попытку. Может быть, я просто принципиально этого не понимаю.

2. Этот код выполняется без инцидентов в моей системе. Внимательно проверьте свою.