Добавление диапазона с одного листа на другой
den45444
Дата: Вторник, 11.08.2015, 01:34 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Прошу помощи. Нужно добавить диапазон из одного листа на другой при условии изменения номера этапа. Чтобы было яснее, прикладываю файл. Жду помощи.
Прошу помощи. Нужно добавить диапазон из одного листа на другой при условии изменения номера этапа. Чтобы было яснее, прикладываю файл. Жду помощи. den45444
К сообщению приложен файл:
___.xlsm
(22.6 Kb)
Ответить
Сообщение Прошу помощи. Нужно добавить диапазон из одного листа на другой при условии изменения номера этапа. Чтобы было яснее, прикладываю файл. Жду помощи. Автор - den45444 Дата добавления - 11.08.2015 в 01:34
miver
Дата: Вторник, 11.08.2015, 09:40 |
Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация:
37
±
Замечаний:
0% ±
Excel 2010
den45444 , Можно так
К сообщению приложен файл:
tmp.xlsm
(29.5 Kb)
Ответить
Сообщение den45444 , Можно такАвтор - miver Дата добавления - 11.08.2015 в 09:40
den45444
Дата: Вторник, 11.08.2015, 11:01 |
Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Ответить
Сообщение miver , А где сам макрос?Автор - den45444 Дата добавления - 11.08.2015 в 11:01
miver
Дата: Вторник, 11.08.2015, 11:11 |
Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация:
37
±
Замечаний:
0% ±
Excel 2010
den45444 , Внутри Попробуйте поменять номер ЭТАПА на вкладке "Этап1"
den45444 , Внутри Попробуйте поменять номер ЭТАПА на вкладке "Этап1"miver
Сообщение отредактировал miver - Вторник, 11.08.2015, 11:11
Ответить
Сообщение den45444 , Внутри Попробуйте поменять номер ЭТАПА на вкладке "Этап1"Автор - miver Дата добавления - 11.08.2015 в 11:11
den45444
Дата: Вторник, 11.08.2015, 11:27 |
Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Внутри Попробуйте поменять номер ЭТАПА на вкладке "Этап1"
Да - добавляется. Вы изменили значение "Итого:" на "Итого (этап №)", а нельзя просто оставить "Итого:"? И почему-то первую ячейку (в столбце наименование работ) выделяет жирным.
Внутри Попробуйте поменять номер ЭТАПА на вкладке "Этап1"
Да - добавляется. Вы изменили значение "Итого:" на "Итого (этап №)", а нельзя просто оставить "Итого:"? И почему-то первую ячейку (в столбце наименование работ) выделяет жирным.den45444
Ответить
Сообщение Внутри Попробуйте поменять номер ЭТАПА на вкладке "Этап1"
Да - добавляется. Вы изменили значение "Итого:" на "Итого (этап №)", а нельзя просто оставить "Итого:"? И почему-то первую ячейку (в столбце наименование работ) выделяет жирным.Автор - den45444 Дата добавления - 11.08.2015 в 11:27
miver
Дата: Вторник, 11.08.2015, 12:04 |
Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация:
37
±
Замечаний:
0% ±
Excel 2010
Вы изменили значение "Итого:" на "Итого (этап №)"
Я ничего не менял - просто скопировал с источника. Можете сами прописать [vba]Код
If InStr(1, arr(i, 1), "Итого") > 0 Then ReDim Preserve rez(1 To UBound(rez), 1 To UBound(rez, 2) + 1) rez(1, UBound(rez, 2)) = "Итого:" // было arr(i, 1) rez(5, UBound(rez, 2)) = arr(i, 7) Exit For ElseIf Not arr(i, 1) = "" Then
[/vba] Макрос не меняет форматирование, а просто вставляет данные. Поменяйте формат, как Вам хочется - он сохранится
Вы изменили значение "Итого:" на "Итого (этап №)"
Я ничего не менял - просто скопировал с источника. Можете сами прописать [vba]Код
If InStr(1, arr(i, 1), "Итого") > 0 Then ReDim Preserve rez(1 To UBound(rez), 1 To UBound(rez, 2) + 1) rez(1, UBound(rez, 2)) = "Итого:" // было arr(i, 1) rez(5, UBound(rez, 2)) = arr(i, 7) Exit For ElseIf Not arr(i, 1) = "" Then
[/vba] Макрос не меняет форматирование, а просто вставляет данные. Поменяйте формат, как Вам хочется - он сохранится miver
Ответить
Сообщение Вы изменили значение "Итого:" на "Итого (этап №)"
Я ничего не менял - просто скопировал с источника. Можете сами прописать [vba]Код
If InStr(1, arr(i, 1), "Итого") > 0 Then ReDim Preserve rez(1 To UBound(rez), 1 To UBound(rez, 2) + 1) rez(1, UBound(rez, 2)) = "Итого:" // было arr(i, 1) rez(5, UBound(rez, 2)) = arr(i, 7) Exit For ElseIf Not arr(i, 1) = "" Then
[/vba] Макрос не меняет форматирование, а просто вставляет данные. Поменяйте формат, как Вам хочется - он сохранится Автор - miver Дата добавления - 11.08.2015 в 12:04
den45444
Дата: Вторник, 11.08.2015, 12:11 |
Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Я ничего не менял - просто скопировал с источника. Можете сами прописать
Понятно. Благодарю. А как сделать, чтобы все менялось по запросу, т.е. по нажатии кнопки?
Я ничего не менял - просто скопировал с источника. Можете сами прописать
Понятно. Благодарю. А как сделать, чтобы все менялось по запросу, т.е. по нажатии кнопки?den45444
Ответить
Сообщение Я ничего не менял - просто скопировал с источника. Можете сами прописать
Понятно. Благодарю. А как сделать, чтобы все менялось по запросу, т.е. по нажатии кнопки?Автор - den45444 Дата добавления - 11.08.2015 в 12:11
den45444
Дата: Вторник, 11.08.2015, 12:20 |
Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
miver , Не подскажете как прописать код, чтобы нижний текст, при добавлении строк, смещался вниз на кол-во добавленных строк этапа. Сейчас добавляется этап, но все что находится ниже стирается.
miver , Не подскажете как прописать код, чтобы нижний текст, при добавлении строк, смещался вниз на кол-во добавленных строк этапа. Сейчас добавляется этап, но все что находится ниже стирается.den45444
Ответить
Сообщение miver , Не подскажете как прописать код, чтобы нижний текст, при добавлении строк, смещался вниз на кол-во добавленных строк этапа. Сейчас добавляется этап, но все что находится ниже стирается.Автор - den45444 Дата добавления - 11.08.2015 в 12:20
miver
Дата: Вторник, 11.08.2015, 12:53 |
Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация:
37
±
Замечаний:
0% ±
Excel 2010
Копируете код в отдельную процедуру, например [vba]Код
Sub perenos() 'Тут вставляем код End Sub
[/vba] Вставляете на лист автофигуру или кнопку и назначаете ей макрос perenos (правая кнопка и соответствующий пункт меню для автофигуры) смещался вниз на кол-во добавленных строк этапа
Для этого нужно удалить очищение [vba]Код
' EndRow = Range("A1000").End(xlUp).Row ' If EndRow > 5 Then Range("A6", "E" & EndRow).ClearContents
[/vba] И добавить строчку перед выгрузкой на лист [vba]Код
Rows("6:" & 4 + UBound(rez, 2)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow Range("A5", Range("A5").Offset(UBound(rez, 2) - 1, UBound(rez) - 1).Address).Rows.Value = Application.Transpose(rez) End If
[/vba]
Копируете код в отдельную процедуру, например [vba]Код
Sub perenos() 'Тут вставляем код End Sub
[/vba] Вставляете на лист автофигуру или кнопку и назначаете ей макрос perenos (правая кнопка и соответствующий пункт меню для автофигуры) смещался вниз на кол-во добавленных строк этапа
Для этого нужно удалить очищение [vba]Код
' EndRow = Range("A1000").End(xlUp).Row ' If EndRow > 5 Then Range("A6", "E" & EndRow).ClearContents
[/vba] И добавить строчку перед выгрузкой на лист [vba]Код
Rows("6:" & 4 + UBound(rez, 2)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow Range("A5", Range("A5").Offset(UBound(rez, 2) - 1, UBound(rez) - 1).Address).Rows.Value = Application.Transpose(rez) End If
[/vba] miver
Сообщение отредактировал miver - Вторник, 11.08.2015, 12:54
Ответить
Сообщение Копируете код в отдельную процедуру, например [vba]Код
Sub perenos() 'Тут вставляем код End Sub
[/vba] Вставляете на лист автофигуру или кнопку и назначаете ей макрос perenos (правая кнопка и соответствующий пункт меню для автофигуры) смещался вниз на кол-во добавленных строк этапа
Для этого нужно удалить очищение [vba]Код
' EndRow = Range("A1000").End(xlUp).Row ' If EndRow > 5 Then Range("A6", "E" & EndRow).ClearContents
[/vba] И добавить строчку перед выгрузкой на лист [vba]Код
Rows("6:" & 4 + UBound(rez, 2)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow Range("A5", Range("A5").Offset(UBound(rez, 2) - 1, UBound(rez) - 1).Address).Rows.Value = Application.Transpose(rez) End If
[/vba] Автор - miver Дата добавления - 11.08.2015 в 12:53
den45444
Дата: Вторник, 11.08.2015, 17:14 |
Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
miver , Никак не могу нормально собрать то что нужно. Высылаю еще раз пример. Не могли бы вы поправить макрос, чтобы при добавлении диапазона, смещалась вся нижняя часть (строка с "Итого" и текст после таблицы). После добавления таблица тоже не растягивается.
miver , Никак не могу нормально собрать то что нужно. Высылаю еще раз пример. Не могли бы вы поправить макрос, чтобы при добавлении диапазона, смещалась вся нижняя часть (строка с "Итого" и текст после таблицы). После добавления таблица тоже не растягивается. den45444
Ответить
Сообщение miver , Никак не могу нормально собрать то что нужно. Высылаю еще раз пример. Не могли бы вы поправить макрос, чтобы при добавлении диапазона, смещалась вся нижняя часть (строка с "Итого" и текст после таблицы). После добавления таблица тоже не растягивается. Автор - den45444 Дата добавления - 11.08.2015 в 17:14
den45444
Дата: Вторник, 11.08.2015, 21:31 |
Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
miver , Немного поправил макрос, но все равно выдает не так как надо. Сейчас в последней строке #нд выдает. Прикрепил еще раз пример, как было, как должно стать. Может сейчас понятнее будет по примеру.
miver , Немного поправил макрос, но все равно выдает не так как надо. Сейчас в последней строке #нд выдает. Прикрепил еще раз пример, как было, как должно стать. Может сейчас понятнее будет по примеру.den45444
Ответить
Сообщение miver , Немного поправил макрос, но все равно выдает не так как надо. Сейчас в последней строке #нд выдает. Прикрепил еще раз пример, как было, как должно стать. Может сейчас понятнее будет по примеру.Автор - den45444 Дата добавления - 11.08.2015 в 21:31
den45444
Дата: Вторник, 11.08.2015, 23:57 |
Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Вроде привел в порядок, но теперь появились 2 вопроса: 1. При изменении номера этапа не удаляет то что было добавлено, а прибавляет к существующим строкам. 2. Если выбираешь этап которого вообще не существует, то он копирует существующие строки и добавляет их над таблицей. Вот файл. Может кто-нибудь поможет разобраться. Жду помощи.
Вроде привел в порядок, но теперь появились 2 вопроса: 1. При изменении номера этапа не удаляет то что было добавлено, а прибавляет к существующим строкам. 2. Если выбираешь этап которого вообще не существует, то он копирует существующие строки и добавляет их над таблицей. Вот файл. Может кто-нибудь поможет разобраться. Жду помощи. den45444
Сообщение отредактировал den45444 - Вторник, 11.08.2015, 23:58
Ответить
Сообщение Вроде привел в порядок, но теперь появились 2 вопроса: 1. При изменении номера этапа не удаляет то что было добавлено, а прибавляет к существующим строкам. 2. Если выбираешь этап которого вообще не существует, то он копирует существующие строки и добавляет их над таблицей. Вот файл. Может кто-нибудь поможет разобраться. Жду помощи. Автор - den45444 Дата добавления - 11.08.2015 в 23:57
den45444
Дата: Среда, 12.08.2015, 11:12 |
Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Копируете код в отдельную процедуру, например Sub perenos() 'Тут вставляем код End Sub
Вставляю код, но при выполнении выдает ошибку
Копируете код в отдельную процедуру, например Sub perenos() 'Тут вставляем код End Sub
Вставляю код, но при выполнении выдает ошибкуden45444
Ответить
Сообщение Копируете код в отдельную процедуру, например Sub perenos() 'Тут вставляем код End Sub
Вставляю код, но при выполнении выдает ошибкуАвтор - den45444 Дата добавления - 12.08.2015 в 11:12
miver
Дата: Четверг, 13.08.2015, 09:51 |
Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация:
37
±
Замечаний:
0% ±
Excel 2010
den45444 , Извините за отсутствие - был в дали от цивилизации Сделал пример, который подходит под все ваши хотелки Кроме 1. При изменении номера этапа не удаляет то что было добавлено, а прибавляет к существующим строкам
Для этого нужно определится до какой строки удалять ? Соотвецтвенно всегда ли есть строка "Все работы выполнены в срок."
den45444 , Извините за отсутствие - был в дали от цивилизации Сделал пример, который подходит под все ваши хотелки Кроме 1. При изменении номера этапа не удаляет то что было добавлено, а прибавляет к существующим строкам
Для этого нужно определится до какой строки удалять ? Соотвецтвенно всегда ли есть строка "Все работы выполнены в срок."miver
Сообщение отредактировал miver - Четверг, 13.08.2015, 09:52
Ответить
Сообщение den45444 , Извините за отсутствие - был в дали от цивилизации Сделал пример, который подходит под все ваши хотелки Кроме 1. При изменении номера этапа не удаляет то что было добавлено, а прибавляет к существующим строкам
Для этого нужно определится до какой строки удалять ? Соотвецтвенно всегда ли есть строка "Все работы выполнены в срок."Автор - miver Дата добавления - 13.08.2015 в 09:51
den45444
Дата: Четверг, 13.08.2015, 12:18 |
Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
miver , Благодарю. Все работает. Но если кнопку переносишь на другой подобный лист, то все сбивается. Как прописать макрос, чтобы он выполнял данное действие. Имя листа может быть разным, но оформление листа такое же. Имя листа откуда нужно переносить всегда будет называться "СМЕТА".
miver , Благодарю. Все работает. Но если кнопку переносишь на другой подобный лист, то все сбивается. Как прописать макрос, чтобы он выполнял данное действие. Имя листа может быть разным, но оформление листа такое же. Имя листа откуда нужно переносить всегда будет называться "СМЕТА".den45444
Ответить
Сообщение miver , Благодарю. Все работает. Но если кнопку переносишь на другой подобный лист, то все сбивается. Как прописать макрос, чтобы он выполнял данное действие. Имя листа может быть разным, но оформление листа такое же. Имя листа откуда нужно переносить всегда будет называться "СМЕТА".Автор - den45444 Дата добавления - 13.08.2015 в 12:18
den45444
Дата: Четверг, 13.08.2015, 12:19 |
Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Для этого нужно определится до какой строки удалять ? Соотвецтвенно всегда ли есть строка "Все работы выполнены в срок."
Добавил вот такой код: [vba]Код
Dim firstRow&, lastRow& firstRow = 0: lastRow = 0 lSt = Columns("A:A").Find(What:="Итого:").Row lSt1 = Columns("A:A").Find(What:="Наименование работ").Row lastRow = lSt - 2 firstRow = lSt1 + 1 If lastRow = 6 Then MsgBox "Добавьте этап": Exit Sub Rows(firstRow & ":" & lastRow).Delete
[/vba]
Для этого нужно определится до какой строки удалять ? Соотвецтвенно всегда ли есть строка "Все работы выполнены в срок."
Добавил вот такой код: [vba]Код
Dim firstRow&, lastRow& firstRow = 0: lastRow = 0 lSt = Columns("A:A").Find(What:="Итого:").Row lSt1 = Columns("A:A").Find(What:="Наименование работ").Row lastRow = lSt - 2 firstRow = lSt1 + 1 If lastRow = 6 Then MsgBox "Добавьте этап": Exit Sub Rows(firstRow & ":" & lastRow).Delete
[/vba]den45444
Ответить
Сообщение Для этого нужно определится до какой строки удалять ? Соотвецтвенно всегда ли есть строка "Все работы выполнены в срок."
Добавил вот такой код: [vba]Код
Dim firstRow&, lastRow& firstRow = 0: lastRow = 0 lSt = Columns("A:A").Find(What:="Итого:").Row lSt1 = Columns("A:A").Find(What:="Наименование работ").Row lastRow = lSt - 2 firstRow = lSt1 + 1 If lastRow = 6 Then MsgBox "Добавьте этап": Exit Sub Rows(firstRow & ":" & lastRow).Delete
[/vba]Автор - den45444 Дата добавления - 13.08.2015 в 12:19
miver
Дата: Четверг, 13.08.2015, 12:51 |
Сообщение № 17
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация:
37
±
Замечаний:
0% ±
Excel 2010
Так не понятно, что сбивается и нет конкретики. Сам макрос не зависит от имени листа Опишу какие данные он берет с листов [vba]Код
arr = Лист1.Range("A5", "I" & Лист1.Range("A1000").End(xlUp).Row).Value
[/vba] Берем исходные данные. Где Лист1 - внутреннее название листа "СМЕТА". Можно заменить на Sheets("СМЕТА") тогда он будет искать лист с точно таким названием "СМЕТА" Все остальное связано с текущем листом, куда вставлен непосредственно код В ячейке "A3" Обязательно должен присутствовать знак "№". Справа от номера допускаются только число Я добавил пример, который удаляет строки по пустой ячейке в столбике "A" после конца таблицы (выше "Все работы выполнены в срок.") Соответственно, теперь нужна эта пустая ячейке в столбике "A" Больше ничего не нужно. В другую книгу лучше переносить копированием целого листа "Этап"
Так не понятно, что сбивается и нет конкретики. Сам макрос не зависит от имени листа Опишу какие данные он берет с листов [vba]Код
arr = Лист1.Range("A5", "I" & Лист1.Range("A1000").End(xlUp).Row).Value
[/vba] Берем исходные данные. Где Лист1 - внутреннее название листа "СМЕТА". Можно заменить на Sheets("СМЕТА") тогда он будет искать лист с точно таким названием "СМЕТА" Все остальное связано с текущем листом, куда вставлен непосредственно код В ячейке "A3" Обязательно должен присутствовать знак "№". Справа от номера допускаются только число Я добавил пример, который удаляет строки по пустой ячейке в столбике "A" после конца таблицы (выше "Все работы выполнены в срок.") Соответственно, теперь нужна эта пустая ячейке в столбике "A" Больше ничего не нужно. В другую книгу лучше переносить копированием целого листа "Этап" miver
Сообщение отредактировал miver - Четверг, 13.08.2015, 12:54
Ответить
Сообщение Так не понятно, что сбивается и нет конкретики. Сам макрос не зависит от имени листа Опишу какие данные он берет с листов [vba]Код
arr = Лист1.Range("A5", "I" & Лист1.Range("A1000").End(xlUp).Row).Value
[/vba] Берем исходные данные. Где Лист1 - внутреннее название листа "СМЕТА". Можно заменить на Sheets("СМЕТА") тогда он будет искать лист с точно таким названием "СМЕТА" Все остальное связано с текущем листом, куда вставлен непосредственно код В ячейке "A3" Обязательно должен присутствовать знак "№". Справа от номера допускаются только число Я добавил пример, который удаляет строки по пустой ячейке в столбике "A" после конца таблицы (выше "Все работы выполнены в срок.") Соответственно, теперь нужна эта пустая ячейке в столбике "A" Больше ничего не нужно. В другую книгу лучше переносить копированием целого листа "Этап" Автор - miver Дата добавления - 13.08.2015 в 12:51
den45444
Дата: Четверг, 13.08.2015, 13:06 |
Сообщение № 18
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
miver , Понял. Благодарю. А если кнопка будет находится совсем в другом месте, т.е. в другом листе, где часто мне нужно будет работать.
miver , Понял. Благодарю. А если кнопка будет находится совсем в другом месте, т.е. в другом листе, где часто мне нужно будет работать.den45444
Ответить
Сообщение miver , Понял. Благодарю. А если кнопка будет находится совсем в другом месте, т.е. в другом листе, где часто мне нужно будет работать.Автор - den45444 Дата добавления - 13.08.2015 в 13:06
miver
Дата: Четверг, 13.08.2015, 13:18 |
Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация:
37
±
Замечаний:
0% ±
Excel 2010
Тогда перед всеми Range, Rows и квадрадными скобками типа [A6] нужно поставить название листа выгрузки - Лист2. или Sheets("Этап").
Тогда перед всеми Range, Rows и квадрадными скобками типа [A6] нужно поставить название листа выгрузки - Лист2. или Sheets("Этап"). miver
Ответить
Сообщение Тогда перед всеми Range, Rows и квадрадными скобками типа [A6] нужно поставить название листа выгрузки - Лист2. или Sheets("Этап"). Автор - miver Дата добавления - 13.08.2015 в 13:18
den45444
Дата: Четверг, 13.08.2015, 14:26 |
Сообщение № 20
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
miver , Благодарю за всю вашу помощь.
miver , Благодарю за всю вашу помощь.den45444
Ответить
Сообщение miver , Благодарю за всю вашу помощь.Автор - den45444 Дата добавления - 13.08.2015 в 14:26