Вот идея вашей проблемы. Установите код в листе кода на рабочем листе, на котором вы хотите выполнить действие (не в стандартном модуле, таком как «Модуль1» !!). Обратите внимание, что код реагирует на двойной щелчок в столбце D от строки 2 до строки последняя использованная строка в столбце A . Вы можете настроить это. Следуйте инструкциям в самом коде. Я использую этот метод вместо кнопки, которую вы, кажется, используете в каждой строке вашего листа - вопрос предпочтения, но используемый здесь для демонстрации и во избежание создания кнопок.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
' 03 Jan 2019
Dim Rng As Range
Dim R As Long
Dim Cell As Range
Dim i As Integer
R = Cells(Rows.Count, "A").End(xlUp).Row ' last used row in column A
Set Rng = Range(Cells(2, 4), Cells(R, 4)) ' used range in column D
If Not Application.Intersect(Target, Rng) Is Nothing Then
' if a cell in Rng as double-clicked:-
R = Target.Row
Set Rng = Range(Cells(R, "A"), Cells(R, "S"))
For Each Cell In Rng
With Cell
If IsDate(.Value) Then
For i = 3 To 1 Step -1
' check if the Numberformat contains all of "m", "d" and "y"
If InStr(1, .NumberFormat, Mid("dmy", i, 1), vbTextCompare) = 0 Then Exit For
Next i
If i = 0 Then ' all 3 were found
If MsgBox("Do you want to delete row " & R & " ?", _
vbQuestion Or vbYesNo, _
"Click ""No"" to keep the row") = vbYes Then
Rows(R).Delete
End If
Exit For
End If
End If
End With
Next Cell
Cancel = True ' ends in-cell editing
End If
End Sub
Код выполняет две проверки в каждой ячейке (A: S). Сначала он проверяет, является ли его значение датой. Затем, предполагая, что это число, он проверяет формат ячейки. Если NumberFormat включает в себя все буквы «m», «d» и «y», это подтверждается как дата и высвобождается для удаления, до которого пользователь может подтвердить свое намерение.
Этот метод может потребовать небольшой подстройки. Во-первых, если в ячейке есть текстовая дата, необходимо выполнить другую вторую проверку. Во-вторых, если формат даты состоит только из 2 из 3 критериев, тест на их присутствие в маске должен быть соответственно уменьшен. Любая из этих модификаций или обе могут быть реализованы, когда природа ваших данных будет лучше понята.