Может можно и формулами , но для надежности создал здесь тему.
У меня на одном листе заполняются колонки. Как мне сделать чтобы при заполнении этих колонок данные тянулись в лист в эти же колонки и также убирались оттуда ,если будут удаляться на исходном листе в реальном времени? Пример прикрепил.
Доброго времени суток!
Может можно и формулами , но для надежности создал здесь тему.
У меня на одном листе заполняются колонки. Как мне сделать чтобы при заполнении этих колонок данные тянулись в лист в эти же колонки и также убирались оттуда ,если будут удаляться на исходном листе в реальном времени? Пример прикрепил.Oh_Nick
Если структура по строкам одинаковая на обоих листах, т.е. количество, номенклатура и порядок строк идентичны, то нечего и голову ломать, обычная ссылка типа =Товары!A2. Нет смысла использовать макросы.
Если структура по строкам одинаковая на обоих листах, т.е. количество, номенклатура и порядок строк идентичны, то нечего и голову ломать, обычная ссылка типа =Товары!A2. Нет смысла использовать макросы.i691198
Private Sub Worksheet_Change(ByVal Target As Range) Dim sh As Worksheet: Set sh = ThisWorkbook.Worksheets("Фильтр") Dim lr As Long: lr = Cells(Rows.Count, 3).End(xlUp).Row
If Not Intersect(Target, Range("C4:C" & lr)) Is Nothing Then UpdateValue sh, Target, -2
ElseIf Not Intersect(Target, Range("E4:E" & lr)) Is Nothing Then UpdateValue sh, Target, -3
ElseIf Not Intersect(Target, Range("I4:I" & lr)) Is Nothing Then UpdateValue sh, Target, -6
ElseIf Not Intersect(Target, Range("J4:J" & lr)) Is Nothing Then UpdateValue sh, Target, -6
ElseIf Not Intersect(Target, Range("L4:L" & lr)) Is Nothing Then UpdateValue sh, Target, -7 End If
End Sub
Sub UpdateValue(ByRef ws As Worksheet, ByRef Target As Range, ByVal OffsetCol As Long) Dim r As Long: r = Target.Row Dim c As Long: c = Target.Column ws.Cells(r, c).Offset(2, OffsetCol).Value = Target.Value End Sub
[/vba] Данный код внесите в модуль Листа Склад. Удачи.
Private Sub Worksheet_Change(ByVal Target As Range) Dim sh As Worksheet: Set sh = ThisWorkbook.Worksheets("Фильтр") Dim lr As Long: lr = Cells(Rows.Count, 3).End(xlUp).Row
If Not Intersect(Target, Range("C4:C" & lr)) Is Nothing Then UpdateValue sh, Target, -2
ElseIf Not Intersect(Target, Range("E4:E" & lr)) Is Nothing Then UpdateValue sh, Target, -3
ElseIf Not Intersect(Target, Range("I4:I" & lr)) Is Nothing Then UpdateValue sh, Target, -6
ElseIf Not Intersect(Target, Range("J4:J" & lr)) Is Nothing Then UpdateValue sh, Target, -6
ElseIf Not Intersect(Target, Range("L4:L" & lr)) Is Nothing Then UpdateValue sh, Target, -7 End If
End Sub
Sub UpdateValue(ByRef ws As Worksheet, ByRef Target As Range, ByVal OffsetCol As Long) Dim r As Long: r = Target.Row Dim c As Long: c = Target.Column ws.Cells(r, c).Offset(2, OffsetCol).Value = Target.Value End Sub
[/vba] Данный код внесите в модуль Листа Склад. Удачи.MikeVol
Ученик. Одесса - Украина
Сообщение отредактировал MikeVol - Суббота, 30.09.2023, 22:14
Разобрался!) Теперь можно сделать, чтобы новые строчки добавлялись в колонку сверху на листе Фильтр? Начиная с 6 строки и так вниз Решил просто захайдить строчки, чтобы не париться)
[vba]
Код
ElseIf Not Intersect(Target, Range("E4:E" & lr)) Is Nothing Then UpdateValue sh, Target, -3
ElseIf Not Intersect(Target, Range("H4:E" & lr)) Is Nothing Then UpdateValue sh, Target, -5
ElseIf Not Intersect(Target, Range("I4:I" & lr)) Is Nothing Then UpdateValue sh, Target, -5
ElseIf Not Intersect(Target, Range("J4:J" & lr)) Is Nothing Then UpdateValue sh, Target, -5
ElseIf Not Intersect(Target, Range("L4:L" & lr)) Is Nothing Then UpdateValue sh, Target, -6 End If
[/vba]
MikeVol,
Разобрался!) Теперь можно сделать, чтобы новые строчки добавлялись в колонку сверху на листе Фильтр? Начиная с 6 строки и так вниз Решил просто захайдить строчки, чтобы не париться)
[vba]
Код
ElseIf Not Intersect(Target, Range("E4:E" & lr)) Is Nothing Then UpdateValue sh, Target, -3
ElseIf Not Intersect(Target, Range("H4:E" & lr)) Is Nothing Then UpdateValue sh, Target, -5
ElseIf Not Intersect(Target, Range("I4:I" & lr)) Is Nothing Then UpdateValue sh, Target, -5
ElseIf Not Intersect(Target, Range("J4:J" & lr)) Is Nothing Then UpdateValue sh, Target, -5
ElseIf Not Intersect(Target, Range("L4:L" & lr)) Is Nothing Then UpdateValue sh, Target, -6 End If
А если строчки копируются уже с других листов и вставляются, то как код отредактировать, чтобы переносил. Я так понимаю, что событие в ячейке это когда происходит действие в самой ячейке, а когда на нее что то накладывается , то это не событие? Помогите отредактировать для такого процесса код.
На листе номенклатура мы заполняем строчку и нажимаем два раза Выбрать -> Переходим на лист Приход и нажимаем два раза Провести -> Строчка отобразилась на листе Склад и должна также отобразиться на листе Фильтр (колонки которые должны отобразиться указаны). Пример и файл прикрепил
Подскажите такой момент:
А если строчки копируются уже с других листов и вставляются, то как код отредактировать, чтобы переносил. Я так понимаю, что событие в ячейке это когда происходит действие в самой ячейке, а когда на нее что то накладывается , то это не событие? Помогите отредактировать для такого процесса код.
На листе номенклатура мы заполняем строчку и нажимаем два раза Выбрать -> Переходим на лист Приход и нажимаем два раза Провести -> Строчка отобразилась на листе Склад и должна также отобразиться на листе Фильтр (колонки которые должны отобразиться указаны). Пример и файл прикрепилOh_Nick
Oh_Nick, Тогда тот код и не нужен (только зря время потерял с вами в субботний вечер). Смотрите файл, код в модуле листа Приход (точнее дописал к существующему коду). В следуйщий раз свою хотелку соберите в один текст чоткий, чтоб не пришлось время зря тратить. Удачи. P.S. Меня нет на сегодня больше. UPDATE! Соблюдайте все шаги что вы описали
На листе номенклатура мы заполняем строчку и нажимаем два раза Выбрать -> Переходим на лист Приход и нажимаем два раза Провести -> Строчка отобразилась на листе Склад и должна также отобразиться на листе Фильтр (колонки которые должны отобразиться указаны).
и будет вам счастье!
Oh_Nick, Тогда тот код и не нужен (только зря время потерял с вами в субботний вечер). Смотрите файл, код в модуле листа Приход (точнее дописал к существующему коду). В следуйщий раз свою хотелку соберите в один текст чоткий, чтоб не пришлось время зря тратить. Удачи. P.S. Меня нет на сегодня больше. UPDATE! Соблюдайте все шаги что вы описали
На листе номенклатура мы заполняем строчку и нажимаем два раза Выбрать -> Переходим на лист Приход и нажимаем два раза Провести -> Строчка отобразилась на листе Склад и должна также отобразиться на листе Фильтр (колонки которые должны отобразиться указаны).