Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - Макрос в Excel

Ответить
Настройки темы
Разное - Макрос в Excel

Аватара для nipopadyuk

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Задача, при заполнении ячейки E[n] в ячейке J[n] прописывать текущую дату, а при заполнении ячейки I[n] прописывать текущую дату в ячейке K[n]
написал на скорую руку такой макрос, но он работает не корректно, при заполнении ячейки E[n] или J[n] дата вставляется и в I[n] и в K[n]
Помогите разобраться, что не так со скриптом...

Код: Выделить весь код
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each cell In Target  
        If Not Intersect(cell, Range("E3:E65536")) Is Nothing Then
            If Range("J" & cell.Row).Value = "" Then
                With Range("J" & cell.Row)

                    .Value = Now


                End With
            Else

            End If
        End If
    Next cell
    For Each cell In Target  
        If Not Intersect(cell, Range("I3:J65536")) Is Nothing Then
            If Range("K" & cell.Row).Value = "" Then
                With Range("K" & cell.Row)

                    .Value = Now


                End With
            Else

            End If
        End If
    Next cell
End Sub

Отправлено: 15:20, 18-11-2015

 

Динохромный


Contributor


Сообщения: 690
Благодарности: 317

Профиль | Отправить PM | Цитировать


Цитата nipopadyuk:
что не так со скриптом »
nipopadyuk, не касаясь вопросов оптимизации кода - должно быть "I", а не "J"
Код: Выделить весь код
If Not Intersect(cell, Range("I3:J65536")) Is Nothing Then
Updated:
В коде Вы дважды перебираете ячейки, значения которых единовременно изменились. Логично было бы делать все за один цикл, например так:
код
Код: Выделить весь код
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each cell In Target
        If cell.Row > 2 And cell.Row <= 65536 And cell.Value <> "" Then
            Select Case cell.Column
                Case 5
                    If cell.Offset(0, 5).Value = "" Then cell.Offset(0, 5).Value = Now
                Case 9
                    If cell.Offset(0, 2).Value = "" Then cell.Offset(0, 2).Value = Now
            End Select
        End If
    Next cell
End Sub

Последний раз редактировалось a_axe, 18-11-2015 в 17:25.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:36, 18-11-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для nipopadyuk

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата a_axe:
nipopadyuk, не касаясь вопросов оптимизации кода - должно быть "I", а не "J" »
Спасибо, решено

Отправлено: 08:55, 19-11-2015 | #3



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - Макрос в Excel

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - Помогите написать макрос в Excel, экспорт данных из Excel в Word. E.v.g Программирование и базы данных 7 03-05-2018 22:18
VBA - макрос excel Maza11 Программирование и базы данных 27 21-07-2015 10:12
VBS/WSH/JS - исправить макрос excel oleg-sm Скриптовые языки администрирования Windows 1 09-08-2013 19:01
VBA - [решено] Макрос excel neo21 Программирование и базы данных 4 06-03-2012 22:04
Разное - Макрос Excel. KiriJolit Microsoft Office (Word, Excel, Outlook и т.д.) 0 02-12-2010 23:19




 
Переход