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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2014, 10:29   #1
Сергей Ш.
Пользователь
 
Регистрация: 02.04.2013
Сообщений: 79
По умолчанию макрос проставления даты

Уважаемые знатоки!
Помогите, пожалуйста, разобраться с макросом.
Макрос проставляет дату когда ячейка заполнена и удаляет дату когда ячейка пуста. Мне же необходимо, что бы дата удалялась, только при внесении конкретного значения, к примеру "Отправлен", а в остальных случаях дата проставлялась.
Для примера вложил файл

Макрос
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("A1:A100")) Is Nothing Then  'если измененная ячейка попадает в диапазон
            If IsEmpty(cell) Then
                cell.Offset(, 1) = Empty
            ElseIf cell.Offset(, 1) = Empty Then
                cell.Offset(0, 1) = Date
            End If
       End If
    Next cell
End Sub
Вложения
Тип файла: zip Лист1.zip (16.6 Кб, 12 просмотров)

Последний раз редактировалось Сергей Ш.; 24.04.2014 в 10:46.
Сергей Ш. вне форума Ответить с цитированием
Старый 24.04.2014, 11:05   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

добавте несколько операторов
Код:
If IsEmpty(cell) or cell = "Отправлен" Then
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 24.04.2014, 12:25   #3
Сергей Ш.
Пользователь
 
Регистрация: 02.04.2013
Сообщений: 79
По умолчанию

Получилось, только не совсем так, как планировалось.
Задумка такая, что бы при смене значения дата то проставлялась то удалялась.
К примеру, если поставить в ячейке значение "Принят", то дата поставится, а если поменять на значение "Отправлен", то дата удалится или наоборот.

Вот макрос с вашим добавлением, может что то я не правильно делаю
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    For Each cell In Target   
       If Not Intersect(cell, Range("A1:A100")) Is Nothing Then 
            If IsEmpty(cell) Then
                cell.Offset(, 1) = Empty
            ElseIf cell.Offset(, 1) = Empty Then
                cell.Offset(0, 1) = Date
            If IsEmpty(cell) Or cell = "Отправлен" Then
            cell.Offset(, 1) = Empty
            End If
       End If
    End If
   Next cell
End Sub

Последний раз редактировалось Сергей Ш.; 24.04.2014 в 12:29.
Сергей Ш. вне форума Ответить с цитированием
Старый 24.04.2014, 12:45   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("A1:A100")) Is Nothing Then  'если измененная ячейка попадает в диапазон O2:O10000
            If IsEmpty(cell) Or Cells = "Отправлен" Then
              cell.Offset(0, 1) = Empty
            Else
              cell.Offset(0, 1) = Date
            End If
       End If
    Next cell
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 24.04.2014, 13:10   #5
Сергей Ш.
Пользователь
 
Регистрация: 02.04.2013
Сообщений: 79
По умолчанию

поставил ваш код, теперь выходит ошибка
Run-time error '7': Out of memory
Сергей Ш. вне форума Ответить с цитированием
Старый 24.04.2014, 13:18   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("A1:A100")) Is Nothing Then  'если измененная ячейка попадает в диапазон O2:O10000
            application.enableevents = false
            If IsEmpty(cell) Or Cells = "Отправлен" Then
              cell.Offset(0, 1).clearcontents
            Else
              cell.Offset(0, 1) = Date
            End If
            application.enableevents = true
       End If
    Next cell
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 24.04.2014, 13:30   #7
Сергей Ш.
Пользователь
 
Регистрация: 02.04.2013
Сообщений: 79
По умолчанию

Та же ошибка и потом дата не ставится.
Посмотрите пожалуйста
Вложения
Тип файла: zip Лист1.zip (15.1 Кб, 10 просмотров)
Сергей Ш. вне форума Ответить с цитированием
Старый 24.04.2014, 15:10   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

тут опечатка у меня, извините не
If IsEmpty(cell) Or Cells = "Отправлен" Then
а
If IsEmpty(cell) Or Cell = "Отправлен" Then
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 24.04.2014, 15:44   #9
Сергей Ш.
Пользователь
 
Регистрация: 02.04.2013
Сообщений: 79
По умолчанию

Спасибо Вам ) все получилось
Вы гений!!!
Сергей Ш. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для автоматического проставления статуса при изменении цвета ячейки Сергей Ш. Microsoft Office Excel 19 15.08.2013 17:59
Необходима формула для проставления даты. Сергей Ш. Microsoft Office Excel 8 13.08.2013 08:42
Макрос по копированию строки, в зависимости от даты Feller Microsoft Office Excel 2 02.11.2011 19:30
макрос отображения даты в сводной таблице S_V Microsoft Office Excel 0 20.05.2011 21:56
Макрос, проставляющий статусы в зависимости от даты Oriella Microsoft Office Excel 2 26.05.2010 18:45