Скрипт удаления строки - сравнение между датами не работает - PullRequest
1 голос
/ 21 марта 2020

Я пытаюсь написать сценарий VBA для запуска набора строк и удалить каждую строку, которая не равна определенной дате. Сравниваемые даты в точности совпадают, но когда я запускаю скрипт, Excel не видит ни одной из совпадающих дат. Как мне получить Excel, чтобы узнать, что эти даты совпадают?

Sub test()

Dim X As Integer
Dim i As Long
Dim sh As Worksheet

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Set sh = ThisWorkbook.Sheets("Sheet1")

Dim k As Long
k = sh.Range("A1", sh.Range("A1").End(xlDown).End(xlDown).End(xlDown).End(xlUp)).Rows.Count

Range("A5:A" & k).Select

For X = 5 To k

    Dim DateValue As String
    Dim DateCheck As String

    DateValue = "A" & CStr(X)
    DateCheck = Range("B2").Value

        If DateValue <> DateCheck Then
            Selection.Rows(i).EntireRow.Delete
        End If
Next

End Sub

1 Ответ

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

Я думаю, что вы хотите значение ячейки A5:

DateValue = Range("A" & CStr(X)).Value2
DateCheck = Range("B2").Value2

Также вы не установили переменную i, я думаю, вы хотите:

Selection.Rows(X).EntireRow.Delete

Два последних Советы по удалению, вам нужно будет удалить строки в обратном порядке (в противном случае в последовательности будут пропуски):

For X = k To 5 Step -1

Или в прямом порядке после удаления строки, уменьшение X, например:

If DateValue = DateCheck Then
 Selection.Rows(X).EntireRow.Delete
 X = X - 1
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...