Ошибка времени выполнения при нажатии кнопки «Отмена» в поле ввода с запросом даты - PullRequest
0 голосов
/ 08 апреля 2020

Конечным результатом этого является табель рабочего времени. Сначала я собрал его вместе в Excel, но я хочу переместить информацию / модуль по заработной плате в доступ. Когда я в Excel, кнопка отмены работает нормально, но в доступе всегда ошибки. Некоторые исследования показывают, что это проблема, которую я решил решить с помощью чего-то вроде

 If StartDate = "" Then
  GoTo ext:
  End If

Это вызывает

ошибка времени выполнения 13.

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

Private Sub CreateTimeSheet_Click()

Dim StartDate As Date

mbox = InputBox("Enter Start Date YYYY/MM/DD", "Enter Start Date")
StartDate = mbox

  If StartDate = "" Then
  GoTo ext:
  End If

FirstDay = Format(CDate(StartDate))
Text76 = Format(CDate(StartDate + 1))
Text77 = Format(CDate(StartDate + 2))
Text78 = Format(CDate(StartDate + 3))
Text79 = Format(CDate(StartDate + 4))
Text80 = Format(CDate(StartDate + 5))
Text81 = Format(CDate(StartDate + 6))
Text82 = Format(CDate(StartDate + 7))
Text83 = Format(CDate(StartDate + 8))
Text84 = Format(CDate(StartDate + 9))
Text85 = Format(CDate(StartDate + 10))
Text86 = Format(CDate(StartDate + 11))
Text87 = Format(CDate(StartDate + 12))
Text88 = Format(CDate(StartDate + 13))

Text61 = Format(CDate(mbox), "dddd")
Text63 = Format(CDate(StartDate + 1), "dddd")
Text64 = Format(CDate(StartDate + 2), "dddd")
Text65 = Format(CDate(StartDate + 3), "dddd")
Text66 = Format(CDate(StartDate + 4), "dddd")
Text67 = Format(CDate(StartDate + 5), "dddd")
Text68 = Format(CDate(StartDate + 6), "dddd")
Text69 = Text61.value
Text70 = Text63.value
Text71 = Text64.value
Text72 = Text65.value
Text73 = Text66.value
Text74 = Text67.value
Text75 = Text68.value

ext:
Exit Sub

End Sub

1 Ответ

1 голос
/ 08 апреля 2020

Поскольку InputBox возвращает String, вам нужно сохранить результат в String, а не в Date переменную. Затем вы можете использовать IsDate(), чтобы проверить, можно ли преобразовать этот результирующий текст в дату. Тогда и только потом продолжайте, иначе выходите. Имейте в виду, что пользователь может вводить все, что угодно, в InputBox - вы не можете полагаться на то, что он вводит фактическое значение даты.

Dim mbox As String
Dim StartDate As Date

mbox = InputBox("Enter Start Date YYYY/MM/DD", "Enter Start Date")
If IsDate(mbox) Then
  StartDate = CDate(mbox)
Else
  If mbox = "" Then
    ' user entered nothing, so cancel
    Exit Sub
  Else
    ' user entered garbage, so tell them what they did wrong
    MsgBox "That is not a date."
    Exit Sub
  End If
End If

' valid data entered... rest of your code here

Кроме того, если вы добавляете дни к значению даты, вы будете хочу использовать DateAdd , а не простое дополнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...