Страницы: 1
RSS
Копирование диапазона ячеек на другую книгу и протяжка до последней строки.
 
Добрый день!

Собственно возникла проблема при копировании ячеек. Казалось бы все просто, но каждый раз выскакивает что-то новое. Вот прошу помощи при возможности.
Записал макрос на рекордер, выполняется он правильно, но когда начинаю вставлять данные о последней строке, либо не выполняется макрос, либо выполняется не правильно. Использовал цикл For, но не получилось ещё.
Последняя строка всегда известна - в переменной "j". А вставляться диапазон из ячеек должен с i-го столбца до конца строки( с i-го потому что есть шапка с инфой).

p.s.: Прошу помощи, потому что сам ещё "зеленый" в программировании.

Ниже код записанный на рекордере:
Код
Sub Макрос1()
    Sheets("Лист2").Select
    ActiveCell.Range("A1:K1").Select
    Selection.Copy
    Sheets("Лист1").Select
    ActiveCell.Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=ActiveCell.Range("A1:K6"), Type:= _
        xlFillDefault
    ActiveCell.Range("A1:K6").Select
End Sub

 
Нужен пример не записанного макрорекордера, а Ваши попытки его поправить
Учимся сами и помогаем другим...
 
Цитата
ber$erk написал:
попытки его поправить
Да, вот.
Код
Sub Макрос1()
Dim n As Integer, j As Integer, i As Integer
 j = Sheets("Лист2").Cells(1, 2).Value       'последняя строка
    If j < 8 Then Exit Sub
      Sheets("Лист2").Select
      Sheets("Лист2").Range("BS5:CC5").Select
      Selection.Copy
      Sheets("Лист1").Select
      Range("BS8").Select
      Selection.Insert Shift:=xlDown
    Selection.AutoFill Destination:=Range("BS8:CC36"), Type:=xlFillDefault
    Range("BS8:CC36").Select

Вместо диапазона "BS8:CC36", нужно, что бы протягивалась до конца строки. Что-то не так делаю.


Что бы было более понятно что просходит: Нужно с Листа2 копировать диапазон, вставлять его в определенное место на Листе1, потом этот диапазон растянуть до последней строки.
Изменено: Exc - 01.07.2016 14:02:35
 
Думаю, что сам файл не помешает увидеть...
 
Код
Sub Макрос1()
Dim n As Integer, j As Integer, i As Integer
 j = Sheets("Лист2").Cells(1, 2).Value       'последняя строка
    If j < 8 Then Exit Sub
      Sheets("Лист2").Select
      Sheets("Лист2").Range("BS5:CC5").Select
      Selection.Copy
      Sheets("Лист1").Select
      Range("BS8").Select
      Selection.Insert Shift:=xlDown
    Selection.AutoFill Destination:=Range("BS8:CC" & j), Type:=xlFillDefault
    Range("BS8:CC" & j).Select
End Sub
Учимся сами и помогаем другим...
 
ber$erk, Пробовал и так, выбивает ошибку как раз в строке #11

Скрытый текст
 
Код
Sub Макрос1()
    Dim n As Integer, j As Integer, i As Integer
    j = Sheets("Лист2").Cells(1, 2).Value       'последняя строка
    If j < 8 Then Exit Sub
    Sheets("Лист2").Range("BS5:CC5").Copy
    Sheets("Лист1").Range("BS8:CC" & j).Paste
End Sub

так попробуйте
Изменено: ber$erk - 01.07.2016 14:30:40
Учимся сами и помогаем другим...
 
Цитата
ber$erk написал:
так попробуйте
Все равно, к сожалению ошибка.
Скрытый текст
 
А j у Вас в этот момент чему равен?
Учимся сами и помогаем другим...
 
Цитата
ber$erk написал:
А j у Вас в этот момент чему равен?
Последней строке, 799, именно столько строк в файле. При этом копирование диапазона не выполнилось.
 
Код
Sub Макрос1()
    Dim n As Integer, j As Integer, i As Integer
    j = Sheets("Лист2").Cells(1, 2).Value       'последняя строка
    If j < 8 Then Exit Sub
    Sheets("Лист2").Range("BS5:CC5").Copy Sheets("Лист1").Range("BS8:CC" & j)
End Sub
Учимся сами и помогаем другим...
 
ber$erk, Огромное спасибо. Работает!

Полезные знания, ещё раз спасибо.
Страницы: 1
Наверх