Дата отчета в виде строки не будет преобразована в длинную - PullRequest
0 голосов
/ 01 мая 2020

Я бился головой об этом! У меня есть переменная с именем repDate, которая сегодня равна "5/1/2020" в виде строки. Я пробовал эту формулу, чтобы преобразовать ее в Long, чтобы я мог сравнить ее с датой в файле rDtLng = CLng(repDate). Я получаю сообщение об ошибке "Несоответствие типов", которое я не уверен, почему будет. Здесь я делаю сравнение, все остальное работает отлично, просто дата отчета, так как долго не хочет работать.

'repDate equals "5/1/2020", currently

rDtLng = CLng(repDate)
.
.
.
'Delete charge offs
 For w = rwCnt To 3 Step -1
     Do While .Cells(w, napbRng.Column).Value2 <= 0 And .Cells(w, apbRng.Column).Value2 <= 0
         If .Cells(w, matDtRng.Column).Value2 = "" Then Exit Do
         If .Cells(w, matDtRng.Column).Value2 < rDtLng Then
             .Rows(w).Delete shift:=xlShiftUp
         Else: Exit Do
         End If
     Loop
Next w

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 01 мая 2020

CLng ожидает ввода числового значения c, которого текст, похожий на дату "5/1/2020" нет.

Вы можете преобразовать его в фактическую дату, используя CDate, а затем выполните математические операции с ней, включая существующее сравнение <.

Хотя, если я понимаю, какова ваша конечная цель, вы можете рассмотреть Range.AutoFilter с фильтром даты, а затем удаляя видимые строки, вместо вашего текущего Do l oop подхода.

Примечание: : вы можете CLng(CDate("5/1/2020")), и результат будет 43952, но это ненужный шаг, так как вы можете делать математику с датами напрямую.

0 голосов
/ 01 мая 2020

Использовать функцию DateValue ().

Sub test()
    Dim myDate As Long
    Dim str As String

    str = "5/1/2020"
    myDate = DateValue(str)

    If myDate = DateSerial(2020, 5, 1) Then
        MsgBox "OK"
    End If

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