Я не знаю ни о каких конкретных событиях для объектов Listobject, но вы можете легко воспроизвести это поведение, используя события листов.
Если вы хотите, чтобы событие происходило, когда вы просто щелкаете в ОДНОЙ ячейке:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim mytbl As ListObject
Set tbl = thisworkbook.sheets("whatever sheet").ListObjects("Table1")
dim overlap as range
set overlap = Intersect(Target, mytbl.databodyrange)
If Not overlap in nothing Then
'your selection is totally or partially inside the table
if overlap.count=1
' you selected only one cell
' do something
' If you want to access the cell selected
' use target.range
Else
msg box('you did not make a proper selection of one cell inside the listobject')
End If
End if
End Sub
Если вы хотите, чтобы событие сработало, когда вы ИЗМЕНИТЕ ЗНАЧЕНИЕ КЛЕТОК ЛИСТОБЪЕКТА:
Вы можете изменить только ячейку за раз. Поэтому нет необходимости проверять количество клеток. Это всегда один.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim mytbl As ListObject
Set tbl = thisworkbook.sheets("whateversheet").ListObjects("Table1")
' the list object table is in sheet 'whateversheet"
dim overlap as range
set overlap = Intersect(Target, mytbl.databodyrange)
If Not overlap is nothing Then
' your selection is inside the table
' code is here when you change the value of a cell of the table.
' do some stuff
' if you want to add the introduced value:
newvalue=target.value
Else
' You might inform the user that the change took place outside the listobject
End If
End Sub
Есть другие события, которые вы можете запрограммировать. двойной щелчок и т. д. и т. д.
в основном это всегда поиск того, инициируется ли событие ячейкой листа, которая принадлежит объекту списка (отсюда и интервал между диапазонами). И если это так, запустить соответствующий код.