Как поместить дату как переменную в формулу в VBA? - PullRequest
0 голосов
/ 16 ноября 2018

В коде дата на 100% правильная.Когда это входит в форму, это выходит "1/0/1900".

Кажется, проблема при использовании формулы в VBA.

TestDate = DateAdd("m", 1, "9/1/2018")
ActiveCell = TestDate 'output: 10/1/2018
ActiveCell.Offset(1).FormulaR1C1 = "=" & TestDate & "" 'output: 1/0/1900
ActiveCell.Offset(2).Formula = "=" & TestDate & "" 'output: 1/0/1900

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Кавычки часто являются болью в формуле. Я не знаю, к какому результату вы стремитесь, но эти версии работают:

    ActiveCell.Offset(1).FormulaR1C1 = "=""" & TestDate & """" 'output: ="10/1/2018"
    ActiveCell.Offset(2).Formula = "=""" & TestDate & """" 'output: ="10/1/2018"
    ActiveCell.Offset(3).FormulaR1C1 = TestDate 'output: 10/1/2018
    ActiveCell.Offset(4).Formula = TestDate 'output: 10/1/2018

А вот и официальная помощь, Кавычки в строковых выражениях .

0 голосов
/ 16 ноября 2018

Ах - понял ... единственный способ заставить его работать - это сделать следующее.Надеюсь, это сработает для вас!

Public Sub Test()

Dim formula As String

ThisWorkbook.ActiveSheet.Cells(1, 1).Select
TestDate = DateAdd("m", 1, "9/1/2018")
ActiveCell = TestDate
formula = "=Date(" + CStr(Year(TestDate)) + "," + CStr(Month(TestDate)) + "," + CStr(Day(TestDate)) + ")"
ActiveCell.Offset(1).FormulaR1C1 = formula
ActiveCell.Offset(2).formula = formula

End Sub
0 голосов
/ 16 ноября 2018

Вот что происходит, когда вы смешиваете даты и строки. TestDate сохраняется не как дата, а как строка 9/1/2018.Когда вы вставляете эту строку в ячейку с третьей строкой ActiveCell.Offset(1).FormulaR1C1 = "=" & TestDate & "" 'output: 1/0/1900, на выходе получается =9/1/2018 (0.00445986124876115).Внутри день 0 - 01.01.1900.Вы должны преобразовать вашу строку TestDate в дату.

...