.png)
У меня есть Лист 1, на котором я ввожу новые данные на рабочий лист, а на моем Справочном листе я извлекаю те же значения из Листа 1, чтобы я мог сортировать их по времени ввода. Моя цель — иметь отображение на Листе 1, которое показывает последние 10 элементов, введенных на Листе 1. Я использовал формулу ниже, чтобы отсортировать мой Справочный лист по дате, но поскольку я использую формулу для извлечения значений, она не срабатывает. Можно ли объединить это с новым макросом, чтобы я мог вводить данные в одном месте и сортировать их в другом месте?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Range
Dim AB As Range
Set A = Range("A:A")
Set AB = Range("A:B")
If Intersect(Target, A) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Target.Offset(0, 1) = Now
AB.Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = True
End Sub
решение1
Похоже, что ваша проблема в том, что ваш макрокод не срабатывает для изменения в одном листе, потому что лист изменяется только в силу ссылки на формулу. Если это так, не можете ли вы поместить код (или вызвать любые необходимые вам Subs) изWorkbook_SheetChange()Вместо этого? (в «Рабочей тетради»ЛистИзменения()событие сработает, когда вы изменителюбойЛист). Вы можете проверить лист, который был изменен, используяИмя Ш.из этой подпрограммы. И получить адрес ячейки изменения, используяЦелевой адрес.