Ошибка выполнения 13, когда TextBox, содержащий дату, пуст - PullRequest
1 голос
/ 06 марта 2020

Несмотря на проверку многих вопросов, связанных с ошибкой 13, я не смог найти ответы на свою проблему, поэтому я делаю снимок здесь:

Я строю свой код для сохранения информации из пользовательской формы, но сначала я Я тестирую, чтобы увидеть, если обязательные текстовые поля пусты. Поскольку я использую 64-битную машину, я использовал CalendarForm от Trevor Eyre.

Однако во время тестирования кода я столкнулся с проблемой с пустыми текстовыми полями, которые получают даты из CalendarForms:

В этой строке:

Dim dteCompraDataOps As Date: dteCompraDataOps = Me.txtTesouro_Compra_DataOps.value

Эта часть выделена и возвращает Runtime Error 13:

dteCompraDataOps = Me.txtTesouro_Compra_DataOps.value 

Когда я проверяю значения, приходящие из пустых TextBoxes, я получаю:

dteCompraDataOps = "00:00:00"` 

Это правильно, так как его следует рассматривать как Date, но это:

Me.txtTesouro_Compra_DataOps.value = ""

Идет как строка.

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

Я мог бы найти решение: создать Select Case для проверки обязательных полей перед объявлением переменных, но я хотел бы узнать, как обращаться с пустыми текстовыми полями, которые должны быть пустыми.

Есть ли шанс, что вы сможете пролить свет на мою головоломку?

Заранее спасибо. Cub4_RJ

1 Ответ

0 голосов
/ 06 марта 2020

Есть два способа справиться с этим.

a) Проверка на ноль:

With Me.txtTesouro_Compra_DataOps
    If Not IsNull(.Value) Then
        If IsDate(.Value) Then dteCompraDataOps = . Value
    End if
End With

b) Ввести новую переменную типа Variant, которая принимает все (включая нули) и проверьте его значение.

Dim rawData As variant
rawData = Me.txtTesouro_Compra_DataOps.Value

If Not IsNull(rawData) Then
    If IsDate(rawData) Then dteCompraDataOps = rawData
End If

Проблема, связанная с подходом A, заключается в том, что значение 123 рассматривается как дата, однако вариант B его перехватит.

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