Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Необходимо усовершенствовать существующий макрос - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Необходимо усовершенствовать существующий макрос (Макросы/Sub)
Необходимо усовершенствовать существующий макрос
Амбросий Дата: Пятница, 11.07.2014, 21:35 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Доброго дня. Суть ситуации в следующем- в документе отслеживается статистика исполнительной дисцыплины, необходима фиксация времени выполнения этапов по проекту (задаче). Существующий макрос фиксирует дату и время назначения ответственного лица в стобце D, так же необходима фиксация времени в столбце F после вставки гиперссылки в столбце G в соответствующей строке. Можно было бы конечно указать в макросе диапозон типа [c:c, g:g] с общим указанием отображения даты и времени в следующей ящейке (или предыдущей), но оформленых документов такого типа уже много и менять их конструкцию не хотелось бы. Ниже прикреплен файл и прописан текст макроса. Заранее благодарен.

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Count > 1 Then Exit Sub
       If Intersect(Me.UsedRange, Me.[c:c], Target) Is Nothing Then Exit Sub
       Target.Next = IIf(Target = "", "", Now)
End Sub
[/vba]

[admin]Тема закрыта. Причина: Нарушение правил пп 2[/admin]
К сообщению приложен файл: __.xlsm (16.9 Kb)
 
Ответить
СообщениеДоброго дня. Суть ситуации в следующем- в документе отслеживается статистика исполнительной дисцыплины, необходима фиксация времени выполнения этапов по проекту (задаче). Существующий макрос фиксирует дату и время назначения ответственного лица в стобце D, так же необходима фиксация времени в столбце F после вставки гиперссылки в столбце G в соответствующей строке. Можно было бы конечно указать в макросе диапозон типа [c:c, g:g] с общим указанием отображения даты и времени в следующей ящейке (или предыдущей), но оформленых документов такого типа уже много и менять их конструкцию не хотелось бы. Ниже прикреплен файл и прописан текст макроса. Заранее благодарен.

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Count > 1 Then Exit Sub
       If Intersect(Me.UsedRange, Me.[c:c], Target) Is Nothing Then Exit Sub
       Target.Next = IIf(Target = "", "", Now)
End Sub
[/vba]

[admin]Тема закрыта. Причина: Нарушение правил пп 2[/admin]

Автор - Амбросий
Дата добавления - 11.07.2014 в 21:35
RAN Дата: Пятница, 11.07.2014, 22:58 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Долго читал
Прочитал
"Делаю так. Можно и этак, но не нужно. Заранее благодарен."

Что чел сказать хотел? Или попросить об чем?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеДолго читал
Прочитал
"Делаю так. Можно и этак, но не нужно. Заранее благодарен."

Что чел сказать хотел? Или попросить об чем?

Автор - RAN
Дата добавления - 11.07.2014 в 22:58
Skif-F Дата: Пятница, 11.07.2014, 23:31 | Сообщение № 3
Группа: Проверенные
Ранг: Участник
Сообщений: 73
Репутация: 14 ±
Замечаний: 0% ±

Excel 2007, 2010, 2013, 2016
Амбросий, позвольте спросить: Зачем эта строка, что она проверяет:
[vba]
Код
If Intersect(Me.UsedRange, Me.[c:c], Target) Is Nothing Then Exit Sub
[/vba]
Когда Вы от этой строки избавитесь в пользу Target.Column и Target.Row, скорее всего, что ВЫ сами ответите на свой вопрос.
 
Ответить
СообщениеАмбросий, позвольте спросить: Зачем эта строка, что она проверяет:
[vba]
Код
If Intersect(Me.UsedRange, Me.[c:c], Target) Is Nothing Then Exit Sub
[/vba]
Когда Вы от этой строки избавитесь в пользу Target.Column и Target.Row, скорее всего, что ВЫ сами ответите на свой вопрос.

Автор - Skif-F
Дата добавления - 11.07.2014 в 23:31
Амбросий Дата: Пятница, 11.07.2014, 23:36 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
RAN,
Цитата
необходима фиксация времени выполнения этапов по проекту (задаче). Существующий макрос фиксирует дату и время назначения ответственного лица в стобце D, так же необходима фиксация времени в столбце F после вставки гиперссылки в столбце G в соответствующей строке.
 
Ответить
СообщениеRAN,
Цитата
необходима фиксация времени выполнения этапов по проекту (задаче). Существующий макрос фиксирует дату и время назначения ответственного лица в стобце D, так же необходима фиксация времени в столбце F после вставки гиперссылки в столбце G в соответствующей строке.

Автор - Амбросий
Дата добавления - 11.07.2014 в 23:36
Амбросий Дата: Пятница, 11.07.2014, 23:39 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Skif-F, К моему сожалению я не разбираюсь в макросах на столько, чтобы их конструировать, поэтому в пользу чего мне склониться, попросту не могу принять решения, из-за отсутствия знаний, но всё равно спасибо- попытаюсь поискать что-нибудь про изложенное вами.


Сообщение отредактировал Амбросий - Пятница, 11.07.2014, 23:40
 
Ответить
СообщениеSkif-F, К моему сожалению я не разбираюсь в макросах на столько, чтобы их конструировать, поэтому в пользу чего мне склониться, попросту не могу принять решения, из-за отсутствия знаний, но всё равно спасибо- попытаюсь поискать что-нибудь про изложенное вами.

Автор - Амбросий
Дата добавления - 11.07.2014 в 23:39
Skif-F Дата: Пятница, 11.07.2014, 23:53 | Сообщение № 6
Группа: Проверенные
Ранг: Участник
Сообщений: 73
Репутация: 14 ±
Замечаний: 0% ±

Excel 2007, 2010, 2013, 2016
Попробуйте так:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Count > 1 Then Exit Sub
      If Target.Column = 3 Then   'Столбец C
          Target.Offset(0, 1).Value = IIf(Target.Value = "", "", Now)
      ElseIf Target.Column = 7 Then   'Столбец G
          Target.Offset(0, -1).Value = IIf(Target.Value = "", "", Now)
      End If
End Sub
[/vba]
Надеюсь, я Вас правильно понял


Сообщение отредактировал Skif-F - Пятница, 11.07.2014, 23:53
 
Ответить
СообщениеПопробуйте так:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Count > 1 Then Exit Sub
      If Target.Column = 3 Then   'Столбец C
          Target.Offset(0, 1).Value = IIf(Target.Value = "", "", Now)
      ElseIf Target.Column = 7 Then   'Столбец G
          Target.Offset(0, -1).Value = IIf(Target.Value = "", "", Now)
      End If
End Sub
[/vba]
Надеюсь, я Вас правильно понял

Автор - Skif-F
Дата добавления - 11.07.2014 в 23:53
Амбросий Дата: Суббота, 12.07.2014, 00:09 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Skif-F, Огромное спасибо! работает именно так , как я просил :)
 
Ответить
СообщениеSkif-F, Огромное спасибо! работает именно так , как я просил :)

Автор - Амбросий
Дата добавления - 12.07.2014 в 00:09
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Необходимо усовершенствовать существующий макрос (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!