Можно ли отсортировать таблицу по дате изменения записи? В частности, как получить доступ из VBA к времени последнего изменения объекта?
У меня есть документ MS Word, где я накапливаю и часто изменяю определенные данные в очень длинной таблице. Поэтому я хотел бы отсортировать данные по времени последней модификации в строках. Конечно, если я добавлю столбец, в который я вручную ввожу время изменения, это будет работать, но я бы хотел избежать этого, если это возможно.
Хорошо, поскольку вопрос был отложен с просьбой сделать его более конкретным, я пытаюсь изменить его соответствующим образом.
Что я конкретно хочу (и тогда я могу сделать это сам) это:
Поскольку MS Word имеет такие функции, как отслеживание изменений, каждая измененная часть текста должна иметь свое время последнего изменения, записанное в той или иной форме.
Тогда у меня вопрос - как я могу получить доступ к этой информации из макроса Visual Basic? Я имею в виду что-то вроде ThisTable.ThisCell.ModificationTime() или ThatTable.CurrentRow.LastModificationSessionTime() или что-то подобное.
1 ответ
Это для листа Excel. Данные вводятся или изменяются в столбце A. Макрос автоматически вводит дату / время в столбец B. Затем макрос сортирует столбец A & B по столбцу B, помещая самое последнее в верхнюю часть.
Введите следующий макрос событий в области кода рабочей таблицы:
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
Поскольку это код рабочего листа, его очень легко установить и использовать автоматически:
- щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel
- выберите View Code - откроется окно VBE
- вставьте материал и закройте окно VBE
Если у вас есть какие-либо проблемы, сначала попробуйте на пробную версию.
Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как.xlsm, а не.xlsx
Чтобы удалить макрос:
- вызвать окна VBE, как указано выше
- очистить код
- закройте окно VBE
Чтобы узнать больше о макросах в целом, смотрите:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
а также
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
Чтобы узнать больше о макросах событий (код листа), см.:
http://www.mvps.org/dmcritchie/excel/event.htm
Макросы должны быть включены, чтобы это работало!