Добрый день! Возможно ли, сделать так, что бы при заполнении Основной таблицы, вводимые данные автоматически переносились на ЛИСТ П, З или И в зависимости от вводимого типа данных. Для примера, если в Основной таблице столбце Сторона стоит П, то эта запись автоматически переноситься на Лист П ит.д., если И, то на лист И (пс. дублироваться должна вся строка таблицы) я нашел Тему с тем чем надо, теперь может кто нибудь объяснить, как подправить макрос, что бы он работал на моей таблице?
Добрый день! Возможно ли, сделать так, что бы при заполнении Основной таблицы, вводимые данные автоматически переносились на ЛИСТ П, З или И в зависимости от вводимого типа данных. Для примера, если в Основной таблице столбце Сторона стоит П, то эта запись автоматически переноситься на Лист П ит.д., если И, то на лист И (пс. дублироваться должна вся строка таблицы) я нашел Тему с тем чем надо, теперь может кто нибудь объяснить, как подправить макрос, что бы он работал на моей таблице?llirik
Автоматически, это когда кроме заполнения таблицы делать не надо. В задаче по ссылке для обработки таблицы надо запускать макрос, не совсем автоматически получается. Под вашу задачу можно использовать событие на листе, по которому запустится макрос. Но для этого надо определить событие. Например, только после полного заполнения строки (14 ячеек) в таблице произойдет перенос или копирование. Перенос или копирование - это вопрос. Судя по примеру надо копировать.
Автоматически, это когда кроме заполнения таблицы делать не надо. В задаче по ссылке для обработки таблицы надо запускать макрос, не совсем автоматически получается. Под вашу задачу можно использовать событие на листе, по которому запустится макрос. Но для этого надо определить событие. Например, только после полного заполнения строки (14 ячеек) в таблице произойдет перенос или копирование. Перенос или копирование - это вопрос. Судя по примеру надо копировать.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
AlexM, событием будет ввод в ячейку значения "З", "И" или "П" в столбце Сторона. Мне кажется, что на основании значения З,И,П должен осуществляться перенос, так как не все строки таблицы будут заполнятся, ввиду отсутствия информации. Собственно и сама таблица носит смысл -разделение на З, П и И. По поводу переноса и копирования, я не совсем понял.
AlexM, событием будет ввод в ячейку значения "З", "И" или "П" в столбце Сторона. Мне кажется, что на основании значения З,И,П должен осуществляться перенос, так как не все строки таблицы будут заполнятся, ввиду отсутствия информации. Собственно и сама таблица носит смысл -разделение на З, П и И. По поводу переноса и копирования, я не совсем понял.llirik
По поводу переноса и копирования, я не совсем понял
Перенос - В основной таблице удалить и вставить в другую таблицу Копирование - Вставить в другую таблицу и оставить в основной.
Цитата (llirik)
на основании значения З,И,П должен осуществляться перенос
Это плохо. Вы ставите З в пустую строку и она перенеслась в таблицу листа З. Получится что в таблицах будут накапливаться строки, в которых только буквы З, И или П
Цитата (llirik)
По поводу переноса и копирования, я не совсем понял
Перенос - В основной таблице удалить и вставить в другую таблицу Копирование - Вставить в другую таблицу и оставить в основной.
Цитата (llirik)
на основании значения З,И,П должен осуществляться перенос
Это плохо. Вы ставите З в пустую строку и она перенеслась в таблицу листа З. Получится что в таблицах будут накапливаться строки, в которых только буквы З, И или ПAlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Перенос - В основной таблице удалить и вставить в другую таблицу Копирование - Вставить в другую таблицу и оставить в основной.
Выбираю пункт-Копирования, нарушение целостности Основной таблицы табу.
Цитата (AlexM)
Это плохо. Вы ставите З в пустую строку и она перенеслась в таблицу листа З. Получится что в таблицах будут накапливаться строки, в которых только буквы З, И или П
З-Заказчик, П-подрядчик, И-Иное Эти три слова в таблице могут встречаться только в одной строке, более нигде. А можно сделать так, после внесения События копируется все ячейки строки до границы таблицы?
Цитата (AlexM)
Перенос - В основной таблице удалить и вставить в другую таблицу Копирование - Вставить в другую таблицу и оставить в основной.
Выбираю пункт-Копирования, нарушение целостности Основной таблицы табу.
Цитата (AlexM)
Это плохо. Вы ставите З в пустую строку и она перенеслась в таблицу листа З. Получится что в таблицах будут накапливаться строки, в которых только буквы З, И или П
З-Заказчик, П-подрядчик, И-Иное Эти три слова в таблице могут встречаться только в одной строке, более нигде. А можно сделать так, после внесения События копируется все ячейки строки до границы таблицы?llirik
Сообщение отредактировал llirik - Среда, 10.04.2013, 10:48
Первый вариант. Код в модуле листа "Основной" [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim irow As Long Application.EnableEvents = False If Not Intersect(Range("B2:B" & Range("A1").End(xlDown).Row), Target) Is Nothing Then For Each iCell In Target If InStr("ИЗП", iCell) Then irow = Sheets(iCell.Value).Range("A1").End(xlDown).Row Rows(iCell.Row).Copy (Sheets(iCell.Value).Rows(irow + 1)) Else iCell.Value = "" End If Next End If Application.EnableEvents = True End Sub
[/vba] Букву в ячейки столбца В вбивать после заполнения строки. Если в столбце А нет номера, то макрос не сработает. Пробуйте, что нитак скажете.
Первый вариант. Код в модуле листа "Основной" [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim irow As Long Application.EnableEvents = False If Not Intersect(Range("B2:B" & Range("A1").End(xlDown).Row), Target) Is Nothing Then For Each iCell In Target If InStr("ИЗП", iCell) Then irow = Sheets(iCell.Value).Range("A1").End(xlDown).Row Rows(iCell.Row).Copy (Sheets(iCell.Value).Rows(irow + 1)) Else iCell.Value = "" End If Next End If Application.EnableEvents = True End Sub
[/vba] Букву в ячейки столбца В вбивать после заполнения строки. Если в столбце А нет номера, то макрос не сработает. Пробуйте, что нитак скажете.AlexM
Вариант 2 Позволяет отредактировать уже скопированную строку, внося данные на основном листе.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim irow As Long, i As Long Application.EnableEvents = False If Not Intersect(Range("B2:B" & Range("A1").End(xlDown).Row), Target) Is Nothing Then For Each iCell In Target If InStr("ИЗП", iCell) And iCell <> "" Then irow = Sheets(iCell.Value).Range("A" & Rows.Count).End(xlUp).Row + 1 For i = 2 To irow - 1 If iCell.Offset(0, -1) = Sheets(iCell.Value).Range("A" & i) Then irow = i Next i Rows(iCell.Row).Copy (Sheets(iCell.Value).Rows(irow)) Else iCell.Value = "" End If Next End If Application.EnableEvents = True End Sub
[/vba]
Перед редактированием удалить букву З, И или П из ячейки редактируемой строки. Внести изменения, вернуть букву.
Вариант 2 Позволяет отредактировать уже скопированную строку, внося данные на основном листе.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim irow As Long, i As Long Application.EnableEvents = False If Not Intersect(Range("B2:B" & Range("A1").End(xlDown).Row), Target) Is Nothing Then For Each iCell In Target If InStr("ИЗП", iCell) And iCell <> "" Then irow = Sheets(iCell.Value).Range("A" & Rows.Count).End(xlUp).Row + 1 For i = 2 To irow - 1 If iCell.Offset(0, -1) = Sheets(iCell.Value).Range("A" & i) Then irow = i Next i Rows(iCell.Row).Copy (Sheets(iCell.Value).Rows(irow)) Else iCell.Value = "" End If Next End If Application.EnableEvents = True End Sub
[/vba]
Перед редактированием удалить букву З, И или П из ячейки редактируемой строки. Внести изменения, вернуть букву.AlexM
Очередной вопрос - почему макрос не работает, но вам не покажу.
а макрос не работал потому что: Ошибок много было. 1. Алексей ошибся в - Подсчет строк на листах З, И и П 2. Заголовки на листах З, И и П нужны так как если их нет, то считать строки невозможно. 3. Код макроса был вставлен не в модуль листа. 4. В столбце В названия должны быть с большой буквы, так же как имена листов
Цитата (RAN)
Очередной вопрос - почему макрос не работает, но вам не покажу.
а макрос не работал потому что: Ошибок много было. 1. Алексей ошибся в - Подсчет строк на листах З, И и П 2. Заголовки на листах З, И и П нужны так как если их нет, то считать строки невозможно. 3. Код макроса был вставлен не в модуль листа. 4. В столбце В названия должны быть с большой буквы, так же как имена листовllirik