Я пытаюсь удалить несколько строк в листе Excel на основе значения ячейки, которое является датой. Лист 1, D6 - дата.Удалить ошибку несоответствия строк
Sub SAVE()
'----- DELETE OLD ROWS -----
Dim r As Range
Dim x As Integer
Dim Monday As String
Dim Tuesday As String
Dim Wednesday As String
Dim Thursday As String
Dim Friday As String
Dim Saturday As String
Dim Sunday As String
Monday = Sheet1.Range("D6").Value
Tuesday = Sheet1.Range("D6").Value + 1
Wednesday = Sheet1.Range("D6").Value + 2
Thursday = Sheet1.Range("D6").Value + 3
Friday = Sheet1.Range("D6").Value + 4
Saturday = Sheet1.Range("D6").Value + 5
Sunday = Sheet1.Range("D6").Value + 6
For x = 5000 To 2 Step -1 '---> Change as needed
Set r = Range("A" & Format(x))
If UCase(r.Value) = Monday Then
Rows(x).EntireRow.Delete
End If
Set r = Range("A" & Format(x))
If UCase(r.Value) = Tuesday Then
Rows(x).EntireRow.Delete
End If
Set r = Range("A" & Format(x))
If UCase(r.Value) = Wednesday Then
Rows(x).EntireRow.Delete
End If
Set r = Range("A" & Format(x))
If UCase(r.Value) = Thursday Then
Rows(x).EntireRow.Delete
End If
Set r = Range("A" & Format(x))
If UCase(r.Value) = Friday Then
Rows(x).EntireRow.Delete
End If
Set r = Range("A" & Format(x))
If UCase(r.Value) = Saturday Then
Rows(x).EntireRow.Delete
End If
Set r = Range("A" & Format(x))
If UCase(r.Value) = Sunday Then
Rows(x).EntireRow.Delete
End If
Next
End Sub
Этот код работает иногда. Каждый раз я получаю ошибку времени выполнения «13» типа «Несоответствие». Когда я нажимаю debug, он выделяет If UCase(r.Value) = Monday Then
.
Ошибка: r.Value = Error 2023, Monday = "7/4/2016"
Изображение листа он тянет из:
Любые идеи, что здесь происходит?
Только принимая дикий удар в темноте, так как мы не можем видеть данные, на которых вы запускаете код, возможно, что ошибка связана с функцией «UCase()», передавая, возможно, пустую ячейку или что-то в этом роде. Проверьте все ячейки и посмотрите, заметили ли вы какие-либо странные символы или аномалии. – AndrewB
Когда вы нажимаете debug, каковы значения переменных 'r.Value' и' Monday'? – omegastripes
Повторите ошибку. Когда вы находитесь в окне отладки, нажмите Ctrl + G, чтобы открыть панель окна «Немедленное окно». В этом окне введите '? r.Value' и сообщает нам результат. – Vegard