Цитата |
---|
пытался прописать ... макрос не работает... |
Идея правильная, но макрос не работает потому что Sheets("Лист2").Range(Range("A65536").End(xlUp).Row + 1) это не адрес ячейки, а число.
По пунктам
1. Вам нунжо определить ячейку на листе Sheets("Лист2").
2. Вы правильно пишете Sheets("Лист2").Range(...) - это определит диапазон, куда нужно вставить.
3. Далее, Вам нужно дать этому диапазону точный адрес - вот тут и происходит ошибка.
Вы устанавливаете следующее ... (Range("A65536").End(xlUp).Row + 1), что буквально говорит программе следующее: пойди в ячейку - A65536, потом поднимись к первой непустой ячейке - .End(xlUp), определи номер строки этой ячейки - .Row, а потом добавь к этому номеру 1.
Что получается по факту - если первая непустая ячейка на листе, допустим, "А12", то ваша конструкция "Range("A65536").End(xlUp).Row + 1" будет значить что программа от ячейки "A65536" поднимется до ячейки "А12", определит, что строка этой ячейки "12", добавит к этому числу "1", и в результате вернет значение "13". В этом случае, конструкцию "Sheets("Лист2").Range(Range("A65536").End(xlUp).Row + 1)" примет то же значение, что и "Sheets("Лист2").Range(13)", т.е. это совсем не адрес ячейки, а просто число.
Надеюсь понятно объяснил
А чтобы правильно написать вашу идую используйте .Offset(строка, столбец):
Код |
---|
Range("A1").CurrentRegion.Copy Sheets("Лист2").Range("A65536").End(xlUp).Offset(1,0) |