Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 22:36   #1
vostok
Форумчанин
 
Регистрация: 29.04.2009
Сообщений: 119
По умолчанию прописать текущую дату

Excel 2003. Срочно! В столбец периодически вписываются разные цифры, надо, чтобы в соседнем столбце напротив цифр прописывалась текущая дата и время, и не обновлялись при открытии, т. е. должно быть видно, когда цифры введены. Помогите, плиз.
vostok вне форума Ответить с цитированием
Старый 29.04.2009, 23:31   #2
IFRSoff
Форумчанин
 
Аватар для IFRSoff
 
Регистрация: 23.02.2009
Сообщений: 306
По умолчанию

Помню кто-то делал тут. Я себе сохранил. Вот так примерно это выглядит. Введите значения в столбец А.
Вложения
Тип файла: rar Я слежу.rar (8.1 Кб, 95 просмотров)
Лень - двигатель прогресса!
IFRSoff вне форума Ответить с цитированием
Старый 30.04.2009, 09:22   #3
vostok
Форумчанин
 
Регистрация: 29.04.2009
Сообщений: 119
По умолчанию

Спасибо большое, очень долго искал этот код, сейчас вставляю в листы, правда, они все запароленные, код не работает на таких, но вчера видел здесь в форуме, что как-бы также кодом можно снять, а потом поставить пароль, буду экспериментировать, не подскажете по теме?
Код (или это макрос?):

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("F:F")) Is Nothing Then
With Target(1, 2)
.Value = Now
.EntireColumn.AutoFit
End With
End If
End Sub

Спасибо еще раз!
vostok вне форума Ответить с цитированием
Старый 30.04.2009, 09:56   #4
alex_r
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 30
По умолчанию

Слегка поправил, теперь код отслеживает изменения, даже если больше одной ячейки изменено. Но если, например, изменить весь столбец, то выполнение кода на несколько минут обеспечено. Как можно оптимизировать?

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
'If Target.Cells.Count > 5 Then Exit Sub
If Not Intersect(Target, Range("A:A")) Is Nothing Then
For Each cell In Target
With cell(1, 2)
.Value = Now
.EntireColumn.AutoFit
End With
Next
End If
End Sub
alex_r вне форума Ответить с цитированием
Старый 30.04.2009, 10:11   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию 2 alex_r

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
        On Error Resume Next
        Application.ScreenUpdating = False
        For Each cell In Intersect(Target, Range("A:A"), Cells.SpecialCells(xlCellTypeConstants)).Cells
            With cell.Next
                .Value = Now
                .EntireColumn.AutoFit
            End With
        Next
    End If
End Sub
А лучше так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
        On Error Resume Next: Application.ScreenUpdating = False
        For Each cell In Intersect(Target, Range("A:A"), Cells.SpecialCells(xlCellTypeConstants)).Cells
            cell.Next.Value = Now
        Next
        Range("A:A").EntireColumn.AutoFit
    End If
End Sub

Последний раз редактировалось EducatedFool; 30.04.2009 в 10:19.
EducatedFool вне форума Ответить с цитированием
Старый 01.05.2009, 12:20   #6
vostok
Форумчанин
 
Регистрация: 29.04.2009
Сообщений: 119
По умолчанию

Всем большое спасибо! Подобрал себе какую надо. А с запароленым листом просто сделал: дата пишется в скрытый незащищенный столбец(.EntireColumn.AutoFit пришлось убрать), а с него копируется уже в видимый защищенный.
vostok вне форума Ответить с цитированием
Старый 01.05.2009, 12:28   #7
Rom1k06
Форумчанин
 
Регистрация: 30.07.2008
Сообщений: 125
По умолчанию

А можно в начале кода прописать
Unprotect(Пароль)


а в конце кода
Protect(Пароль)

Получится так :
Сначала распаролит лист, внесет изменения, а потом опять запаролит!
Rom1k06 вне форума Ответить с цитированием
Старый 06.09.2009, 13:17   #8
1kach
Новичок
Джуниор
 
Регистрация: 06.09.2009
Сообщений: 1
По умолчанию

Как сделать что бы при внесении данных в строках, автоматически устанавливалась текущая дата в верхней ячейке данного столбца /т.е. если в горизонтально строке данной таблицы есть какая нить цифра, то в самой верхней ячейки данного столбца указывается дата ввода информации
1kach вне форума Ответить с цитированием
Старый 06.09.2009, 19:39   #9
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте 1kach.
добавьте в код листа подобные строки:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Cells(1, Target.Column) = Date
End Sub
Евгений.
P.S.если Вы желаете и в будущем получать ответы на вопросы, создавайте свою "ветку" и это будет правильно.
Teslenko_EA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать текущую форму главной? TaTT DoGG Общие вопросы .NET 2 10.06.2009 15:34
Как мне узнать текущую строку в БД (InterBase) Edward БД в Delphi 2 05.03.2009 17:09
Макрос. Найти текущую дату в колонке через Find Leanna Microsoft Office Excel 5 19.12.2008 17:06
Как получить текущую дату из SQL запроса? _ozzy_ SQL, базы данных 2 09.09.2008 21:15
Определить текущую ячейку на листе НикНик Microsoft Office Excel 5 18.08.2008 09:40