Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: Oleg Pronin от 08.03.2018, 20:14

Название: Копирование данных на другой лист при условии изменения значения в ячейке
Отправлено: Oleg Pronin от 08.03.2018, 20:14
Подскажите пожалуйста как в VBA сделать копирование определённых значений в строчке и значения в подшапке при условии что значение в данной строчке в колонке ПОСЛ.ЗАМЕНА изменится. Копироваться должно на другой лист в определённом порядке в пустую ниже строчку. Такой ЛОГ лист своего рода.
Табличку прилагаю.
Название: Re: Копирование данных на другой лист при условии изменения значения в ячейке
Отправлено: boa от 09.03.2018, 13:16
листинг модуля листа "обслуживание"

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'Worksheet_Change - событие листа которое происходит после изменения в ячейке
    If Target.Count > 1 Then Exit Sub   'если изменения произошли более чем в 1 ячейке, то выходим
    Dim iRow&: iRow = Target.Row
    Dim iCol&: iCol = Target.Column

    If iCol = 1 Or iCol = 5 Then    'выберите сами какие колонки мониторятся
        With ThisWorkbook.Sheets("история замен")
        'в Юнионе перечислите ячейки которые должны быть скопированы
            Application.Union(Cells(iRow, 12), Cells(iRow, 4)).Copy .Range("A" & .Range("A1").End(xlDown).Row + 1)
        End With
    End If
End Sub
Название: Re: Копирование данных на другой лист при условии изменения значения в ячейке
Отправлено: Oleg Pronin от 10.03.2018, 20:42
Спасибо за помощь, но вот в чём проблемка?
(https://s2.wampi.ru/2018/03/10/NABROSOK.png)
https://wampi.ru/image/dqwqXf
Название: Re: Копирование данных на другой лист при условии изменения значения в ячейке
Отправлено: boa от 11.03.2018, 12:07
Здравствуйте, 
подправил в своем сообщении.
Извините, не проверил, когда выкладывал
Название: Re: Копирование данных на другой лист при условии изменения значения в ячейке
Отправлено: Oleg Pronin от 15.03.2018, 14:41
что же может быть, доверие в безопасности макроса выставлено.
(https://image.ibb.co/fcx7QH/1.png)
Название: Re: Копирование данных на другой лист при условии изменения значения в ячейке
Отправлено: boa от 15.03.2018, 18:24
Даже не знаю что у вас за баг  :-\
попробуйте прописать все объекты явно

Option Explicit

' листинг [abbr=правой кнопкой мыши по ярлычку листа -> Исходный текст]модуля листа[/abbr] "обслуживание"
Private Sub Worksheet_Change(ByVal Target As Range)
'Worksheet_Change - событие листа которое происходит после изменения в ячейке
    If Target.Count > 1 Then Exit Sub   'если изменения произошли более чем в 1 ячейке
    Dim iRow&: iRow = Target.Row
    Dim iCol&: iCol = Target.Column

If iCol = 1 Or iCol = 5 Then    'выберите сами какие колонки мониторятся
    With ThisWorkbook.Sheets("история замен")
    'в Юнионе перечислите ячейки которые должны быть скопированы
        Excel.Application.Union(Me.Cells(iRow, 12), Me.Cells(iRow, 4)).Copy .Cells(.Columns(1).End(xlDown).Row + 1, 1)
    End With
End If
End Sub

Кстати, какая у вас версия Excel?

Прикладываю ваш файл с рабочим кодом.