2

У меня есть документ MS Word, где я накапливаю и часто изменяю определенные данные в очень длинной таблице. Поэтому я хотел бы отсортировать данные по времени последней модификации в строках. Конечно, если я добавлю столбец, в который я вручную ввожу время изменения, это будет работать, но я бы хотел избежать этого, если это возможно.

Хорошо, так как вопрос был отложен с просьбой сделать его более конкретным, я пытаюсь изменить его соответствующим образом.

Что я конкретно хочу (и тогда я могу сделать это сам) это:

Поскольку MS Word имеет такие функции, как отслеживание изменений, каждая измененная часть текста должна иметь свое время последнего изменения, записанное в той или иной форме.

Мой вопрос тогда - как я могу получить доступ к этой информации из макроса Visual Basic? Я имею в виду что-то вроде ThisTable.ThisCell.ModificationTime() или ThatTable.CurrentRow.LastModificationSessionTime() или что-то подобное.

1 ответ1

2

Это для листа Excel . Данные вводятся или изменяются в столбце А. Макрос автоматически вводит дату / время в столбец 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

Поскольку это код рабочего листа, его очень легко установить и использовать автоматически:

  1. щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel
  2. выберите View Code - откроется окно VBE
  3. вставьте материал и закройте окно VBE

Если у вас есть какие-либо проблемы, сначала попробуйте на пробную версию.

Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить макрос:

  1. вызвать окна VBE, как указано выше
  2. очистить код
  3. закройте окно 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

Макросы должны быть включены, чтобы это работало!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .