2015-09-18 4 views
0

Привет, я столкнулся с последними вариантами сохранения книги, благодаря чему код позволяет отслеживать дату и время последнего изменения и отображения в ячейке. интересно, может ли vba разрешить отслеживать данные и время их последнего изменения на конкретном листе, скажем, Sheet1. Таким образом, каждый раз изменения были сделаны и сохранены в листе 1, это отразило бы время и дату, сохраненные только на этом листе. Вот код, который у меня есть для рабочей книги, попытался добавить .Sheets("Sheet 1") в код, но он отслеживает время, которое я посетил на странице, а не редактировал. Это коды в моей книге.Дата и время сохранения VBA для определенного рабочего листа

Private Sub Workbook_Open() 
    Call starttheClock 
End Sub 

Sub Workbooky() 
ActiveWindow.ScrollRow = 1 
End Sub 

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 

    If ActiveSheet.Name = "Index" Then Exit Sub 

    Application.EnableEvents = 0 

    i = ActiveSheet.Index 

    With Sheets("Index") 

     .Cells(i, 1) = ActiveSheet.Name 
     .Cells(i, 2) = Now 

    End With 

    Application.EnableEvents = 1 

End Sub 

ответ

1

Просто, чтобы добавить немного больше путаницы в ответе выше, если у вас есть лист с именем «Index» и хотят иметь дату, которая добавляется к листу каждый раз, когда есть изменение к нему, возможно, код, который войдет в модуль рабочей книги. Тогда у вас будет только один код для проверки всякий раз, когда у любого из рабочих листов есть изменения.

Здесь находится модуль рабочей книги и код принадлежит.

enter image description here

Это предполагает, что вы есть лист с именем «Index», имя его, что вы хотите, как только вы получите это происходит должным образом. Фактическое имя листа и имя листа в коде должны совпадать точно.

enter image description here

Вот код, который будет идти в модуле рабочей книги. Скопируйте и вставьте его в модуль Workbook

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 

    If ActiveSheet.Name = "Index" Then Exit Sub 

    Application.EnableEvents = 0 

    i = ActiveSheet.Index 

    With Sheets("Index") 

     .Cells(i, 1) = ActiveSheet.Name 
     .Cells(i, 2) = Now 

    End With 

    Application.EnableEvents = 1 

End Sub 
+0

Этот код работает, но когда я не делаю изменения, это время изменения. Просто посетите этот лист, который он изменит. Время отслеживает активность листа нет, когда я редактирую – Niva

+0

yup! он отслеживает время, которое я посетил на листе, не редактирую .. – Niva

+0

Не знаю, что я знаю – Niva

1

Вы не можете сохранить рабочий лист. Всегда вам нужно сохранить всю книгу. Именно по этой причине возникают ошибки.

Если вы хотите узнать точное время и дату, которые вы редактировали на каждом листе, вы можете найти их ниже.

http://www.ozgrid.com/forum/showthread.php?t=46624

Private Sub Worksheet_Change(ByVal Target As Range) 
    Sheets("Index").Range("B2") = Now 
End Sub 
+0

Я пытаюсь это, но это не позволяет мне работать, так как это частная суб, судимый вызов функции/приложения. но он продолжает говорить мне аргументы, а не факультативные. – Niva

+0

Код, указанный выше, является кодом рабочей таблицы_event и относится к модулю рабочего листа. Всякий раз, когда вы вносите изменения в лист, лист «Индекс» диапазона B1 будет вводить «Сейчас» с точки зрения сегодняшней даты и времени, я полагаю. – Davesexcel

Смежные вопросы