Страницы: 1
RSS
Автоматическое добавление текущей даты и имени пользователя
 
прочел о том как сделать Автоматическое добавление текущей даты в ячейку - спасибо - очень интересно  
Возник вопрос как сделать что-бы в определенный столбец добавлялась текущая дата при изменении содержания в любой из ячеек заданного диапазона  
и как вставить имя Автора документа (того кто его последним редактировал)? тк с файлом работают несколько людей и он лежит в общей папке на сервере
 
Есть одна интересная фишка, только чтобы она работала необходимо включить галку в параметрах, разрешающую использование кольцевых ссылок, тогда формула будет работать (вкладка Вычисления в Параметрах):  
Например, если нужно, чтобы в столбце А автоматически появлялась дата, когда в столбце B в соответствующую строчку чего-нибудь вводится, то можно забить в столбец А следующую формулу:  
=ЕСЛИ(ЕПУСТО(B1);" ";ЕСЛИ(А1=" ";ТДАТА();A1)).  
Тут только есть проблема - это то, что разрешение на использование подобных формул не является однозначным атрибутом данной конкретной книги, а будет применяться ко всем открытым книгам в Excel и к тому же может переключиться в зависимости от того, какая книга (с разрешенными кольцевыми ссылками или нет) была открыта раньше (более продвинутые юзеры меня поправят, если что-то не совсем точно здесь написал).
 
Уважаемые! Туплю по черному :) помогите правильно напичать следующее: нужно на отдельном листе собирать данные об изменении определенного диапазона на любых листах в книге (в том числе и добавляемых)  
 
Пишу примерно так (есть лист "обновления" на который хочу собирать данные о изменениях на других листах)  
 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)  
If Target.Cells.Count > 1 Then Exit Sub  
If Not Intersect(Target, Range("A1:k1000")) Is Nothing Then  
Target(1, 20).Value = Now  
 
For i = 2 To Sheets.Count  
Sheets("Обновления").Cells(i, 1).Value = "Данные на листе ''" & Sheets(i).Name & "'' последний раз обновлялись -"  
Sheets("Обновления").Cells(i, 6).Value = Now  
Next i  
End  
End If  
End Sub  
 
Но как-то коряво все это не работает :) на сколько я понимаю, первая часть макроса (до фора) работает на активном листе (но в явном виде это не сказано, да и для приведенного выше примера был только один лист, соответственно не было необходимости явно указывать). А вторая часть работает на половину - те текст пишется, а время и дата - нет, на листе "обновления" и не происходит ни чего, вроде как правильно. А после первого прохода, на второй строке макроса ("If Not Intersect...") затык - начинает ругаться по всякому и есстественно из екселя выкидывает в дебаг.    
Вторые сутки не могу сообразить как правильно написать. Может все просто? кто помогёт?
 
Добавь в начало процедуры такую проверку:  
If Sh.name="Обновление" then exit sub  
Т.к. внося инфу об изменениях в ячеку, процедура снова вызывается.
 
а ещё можно попробовать добавить код против зацикливания (вызова процедурой самой себя...)  
вначале, сразу после Private Sub Workbook_SheetChange(...)  
Application.EnableEvents = False  
...  
потом, в конце  
Application.EnableEvents = True
 
{quote}{login=Ajax}{date=10.10.2007 12:25}{thema=}{post}Есть одна интересная фишка, только чтобы она работала необходимо включить галку в параметрах, разрешающую использование кольцевых ссылок, тогда формула будет работать (вкладка Вычисления в Параметрах):  
Например, если нужно, чтобы в столбце А автоматически появлялась дата, когда в столбце B в соответствующую строчку чего-нибудь вводится, то можно забить в столбец А следующую формулу:  
=ЕСЛИ(ЕПУСТО(B1);" ";ЕСЛИ(А1=" ";ТДАТА();A1)).  
Тут только есть проблема - это то, что разрешение на использование подобных формул не является однозначным атрибутом данной конкретной книги, а будет применяться ко всем открытым книгам в Excel и к тому же может переключиться в зависимости от того, какая книга (с разрешенными кольцевыми ссылками или нет) была открыта раньше (более продвинутые юзеры меня поправят, если что-то не совсем точно здесь написал).{/post}{/quote}  
 
не могу найти (вкладка Вычисления в Параметрах):
 
Сервис-Параметры-Вычисления-Итерации.  
Gоказанная формула сработает только единожды - при введении данных в ячейку.  
Для контроля изменения данных в исходной ячейке необходимо использовать несколько служебных ячеек.  
Подробнее-поиск по форуму по слову "Итерации".  
 
Плюс такого решения - не нужно использовать VBA.  
О неудобствах данной возможности  Excel Ajax написал.
 
Сервис-Параметры-Вычисления-Итерации.  
Gоказанная формула сработает только единожды - при введении данных в ячейку.  
Для контроля изменения данных в исходной ячейке необходимо использовать несколько служебных ячеек.  
Подробнее-поиск по форуму по слову "Итерации".  
 
Плюс такого решения - не нужно использовать VBA.  
О неудобствах данной возможности Excel Ajax написал.  
 
СПАСИБО!
 
С датами все понятно. подскажите, как сделать чтобы автоматически добавлялся пользователь в определенную ячейку?
Страницы: 1
Читают тему
Наверх