Excel VBA не читает данные даты так, как я хочу - PullRequest
0 голосов
/ 28 января 2020

У меня есть программа, которая должна считывать дату из ячейки. В этой ячейке я дал ему значение = NOW (), просто введя его в ячейку вне VBA. Ячейка отформатирована как дата и имеет формат: дд-месяц (например, 28 января). Когда VBA читает ячейку, он читает ее как мм / дд / ггг 00:00:00 AM / PM. Есть ли способ заставить мой код читать месяц из установленного мною формата? Ниже приведен фрагмент моего кода:

dashpos = InStr(1, ThisWorkbook.Worksheets("Main").Cells(2, 15), "-")
curmonth = Right(ThisWorkbook.Worksheets("Main").Cells(2, 15).Value, dashpos + 1)

Ячейка, содержащая дату, - Ячейка (2,15). Затем я go использую три буквы месяца, чтобы определить следующий месяц с помощью курьеза Select Case.

Ответы [ 3 ]

0 голосов
/ 28 января 2020
Sub testDateExtraction()
  'Next day in the format you use in the sheet (no matter, in fact...):
  Debug.Print Format(ThisWorkbook.Worksheets("Main").Cells(2, 15).Value + 1, "dd-mmm")

  'Next month
  Debug.Print MonthName(Month(ThisWorkbook.Worksheets("Main").Cells(2, 15).Value) + 1, True)

    'If you insists to use the string type data:
    Dim strDate As String, strMonth As String
    strDate = CStr(Format(ThisWorkbook.Worksheets("Main").Cells(2, 15).Value + 1, "dd-mmm"))
    strMonth = Right(strDate, 3)
    Debug.Print MonthName(Month(DateValue(Day(Date) & "-" & strMonth & "-2020")) + 1, True)
End Sub
0 голосов
/ 28 января 2020

Затем я go использую три буквы месяца для определения следующего месяца

Если вы хотите определить следующий месяц, вы можете просто использовать DateAdd и Month. Формат ячейки не имеет значения.

Следующий номер возвращает номер месяца:

Month(DateAdd("m", 1, Cells(2,15)))

Если по какой-то причине вам нужна трехбуквенная строка, то

Format(DateAdd("m", 1, Cells(2,15)), "mmm")
0 голосов
/ 28 января 2020

Если ваш формат мм / дд / ггг 00:00:00 AM / PM на листе, то месяц всегда будет иметь две цифры. Для этого:

curmonth = CLng(Left(ThisWorkbook.Worksheets("Main").Cells(2, 15).Text, 2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...