Вы можете использовать что-то вроде этого, с которым я только что сбил. Введите RowID
в последней строке в столбце A, и если вы удалите строки/ячейки, которые перемещают эту ячейку, она сообщит о последнем выбранном диапазоне и строке перед диапазоном.
Option Explicit
Dim deletedRng() As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
'***Enter string "RowID" in cell [A1048547]
Dim rowID As Long
Dim rowFind As Range
With Target.Parent
Set rowFind = .Range("A:A").Find(What:="RowID", LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
Application.EnableEvents = False
If rowFind Is Nothing Then
.Range("A" & .Rows.Count).Value = "RowID"
Else
If rowFind.Row < .Rows.Count Then
MsgBox "Cell (1,1) of range deleted = " & deletedRng(Target.Cells(1, 1).Row, Target.Cells(1, 1).Column)
rowFind.ClearContents
.Range("A" & .Rows.Count).Value = "RowID"
End If
End If
Application.EnableEvents = True
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
ReDim deletedRng(1, 1)
deletedRng(1, 1) = Target.Value
Else
deletedRng = Target.Parent.Range("A1:" & Target.Address).Value
End If
End Sub
спасибо, я пробую ваш код, и это говорит мне, что номер строки был удален. но возможно ли получить не только номер строки, но и (например) первую ячейку («Target.cells (1,1) .value') строки удалено? – johnn
Да - 'Target.Cells (1, 1) .Address' или для строки' Target.Cells (1, 1) .EntireROw.Address' – osknows
Благодарим за внимание. Я хочу сказать, что я хочу «Значение» первой ячейки строки, которая была удалена, а не «Адрес». – johnn