Я устанавливаю систему управления Diesel Record в Excel для молочной фермы. Он будет функционировать как примитивная система реляционных баз данных. Водители, транспортные средства и подрядчики будут иметь свой собственный лист.
Я пытаюсь добавить подпункт, чтобы удалить запись, если была допущена ошибка. Каждая запись имеет уникальный идентификатор в столбце 1 соответствующих таблиц.
My Sub должен пройти по всем листам, определить, существует ли идентификатор в столбце 1 листа, и удалить строку, в которой находится идентификатор, если он существует на листе.
Он не делает то, что я пытаюсь, и я понятия не имею, почему. Любая помощь будет оценена по достоинству.
Я также пытался выбрать Целый ряд вместо его удаления - просто чтобы посмотреть, выбрал ли он неправильную строку и удалял, однако мой код возвращает ошибку RunTime 1004: «Выбор метода класса Range не удался».
'Sub Delete_2()
Dim r As Integer
Dim To_Delete As String
To_Delete = InputBox("Input Entry ID to delete", "Delete Record",
"Entry_ID")
For Each sht In Worksheets
For r = sht.UsedRange.Rows.Count To 1 Step -1
If Cells(r, "A").Value = To_Delete Then
sht.Rows(r).EntireRow.Delete
End If
Next r
Next sht
End Sub'
Код выполняется без ошибок, но не удаляет строки.
Я подозреваю, что ошибка связана с ActiveSheet или Outer For Loop («Для каждого sht в WorkSheets»). Макрос активируется нажатием кнопки. Если я добавлю идентификатор в столбец 1 листа, где находится кнопка, будет удалена правильная строка. Если этот же идентификатор находится в столбце 1 нескольких других листов, строки не будут удалены. Если макрос запускается нажатием кнопки без идентификатора в ActiveSheet, строки не удаляются.