Страницы: 1
RSS
Дата/время в двух местах таблицы при редактировании соседних ячеек
 
Добрый день!
Подскажите пожалуйста, как добавить условие в уже написанный код.
Есть таблица:
ФИО                              Дата обращения                     Суть заявки        Статус                      Дата смены статуса
Иванов                        ???    закончился картридж        Отправлено              24.10.2019 9:35
Макрос для заполнения даты смены статуса у меня прописан, но как дописать код так, чтобы при выборе сотрудника автоматически появлялись дата и время в ячейке дата обращения. Понимаю, что код должен выглядеть так же, как и для ячейки дата смены статуса, но как продублировать условие  - не знаю, нет навыков работы с макросами.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
   
   For Each cell In Target   'проходим по всем измененным ячейкам
      If Not Intersect(cell, Range("D2:D1000")) Is Nothing Then 'если измененная ячейка попадает в диапазон D2:D100
           With cell.Offset(0, 1)        'вводим в соседнюю справа ячейку дату
              .Value = Now
              .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца E, чтобы дата умещалась в ячейке
           End With
      End If
   Next cell
End Sub
Изменено: Анастасия К. - 24.10.2019 14:17:03
 
Добрый день. Без файла примера непонятно, где расположена ячейка дата обращения Покажите в файле - при смене здесь надо получить вот такое вот тут, и объясните взаимосвязь.
Если речь идет об отслеживании изменений в ячейке столбца А и указания даты изменения в соседней ячейке, то условие добавляется просто:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    
   For Each cell In Target   'проходим по всем измененным ячейкам
      If Not Intersect(cell, Range("D2:D1000")) Is Nothing Then 'если измененная ячейка попадает в диапазон D2:D100
           With cell.Offset(0, 1)        'вводим в соседнюю справа ячейку дату
              .Value = Now
              .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца E, чтобы дата умещалась в ячейке
           End With
      ElseIf Not Intersect(cell, Range("A2:A1000")) Is Nothing Then 
            With cell.Offset(0, 1)        'вводим в соседнюю справа ячейку дату
              .Value = Now
              .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца C, чтобы дата умещалась в ячейке
           End With
      End If
   Next cell
End Sub
Изменено: Пытливый - 24.10.2019 14:21:42
Кому решение нужно - тот пример и рисует.
 
При выборе сотрудника из списка - должна появляться дата (и время), когда ячейка с фамилией была заполнена. А дата статуса должна заполняться при каждой смене статуса.
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    
   For Each cell In Target   'проходим по всем измененным ячейкам
      If Not Intersect(cell, Range("D2:D1000")) Is Nothing Then 'если измененная ячейка попадает в диапазон D2:D100
           With cell.Offset(0, 1)        'вводим в соседнюю справа ячейку дату
              .Value = Now
              .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца E, чтобы дата умещалась в ячейке
           End With
      End If
      If Not Intersect(cell, Range("A2:A1000")) Is Nothing Then 'если измененная ячейка попадает в диапазон D2:D100
           With cell.Offset(0, 1)        'вводим в соседнюю справа ячейку дату
              .Value = Now
              .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца E, чтобы дата умещалась в ячейке
           End With
      End If
   Next cell
End Sub

Собственно Пытливый это уже написал.
Изменено: МатросНаЗебре - 24.10.2019 14:23:59
 
Добрый день!

Можно так (если фио в столбце А) :
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    
   For Each cell In Target   'проходим по всем измененным ячейкам
      If Not Intersect(cell, Range("B2:B1000")) Is Nothing Then 'если измененная ячейка попадает в диапазон D2:D100
           With cell.Offset(0, 1)        'вводим в соседнюю справа ячейку дату
              .Value = Now
              .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца E, чтобы дата умещалась в ячейке
           End With
      End If
   Next cell

   For Each cell In Target   'проходим по всем измененным ячейкам
      If Not Intersect(cell, Range("D2:D1000")) Is Nothing Then 'если измененная ячейка попадает в диапазон А2:А100
           With cell.Offset(0, 1)        'вводим в соседнюю справа ячейку дату
              .Value = Now
              .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца В, чтобы дата умещалась в ячейке
           End With
      End If
   Next cell

End Sub
Изменено: Alex9000 - 24.10.2019 14:23:31
 
Цитата
Пытливый написал:
Private Sub Worksheet_Change(ByVal Target As Range)        For Each cell In Target   'проходим по всем измененным ячейкам      If Not Intersect(cell, Range("D2:D1000")) Is Nothing Then 'если измененная ячейка попадает в диапазон D2:D100           With cell.Offset(0, 1)        'вводим в соседнюю справа ячейку дату              .Value = Now              .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца E, чтобы дата умещалась в ячейке           End With      ElseIf Not Intersect(cell, Range("A2:A1000")) Is Nothing Then            With cell.Offset(0, 1)        'вводим в соседнюю справа ячейку дату              .Value = Now              .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца C, чтобы дата умещалась в ячейке           End With      End If   Next cellEnd Sub
Спасибо большое, заработало. Я пыталась так делать, но видимо что-то неправильно указывала и итог был неутешительным.
Еще раз спасибо!
Страницы: 1
Наверх