#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. Этот код выполняется без инцидентов в моей системе. Внимательно проверьте свою.