2014-10-22 3 views
0

Я пытаюсь написать макрос VBA для Excel 2013. Цель состоит в том, чтобы объединить два листа в объединенный рабочий лист. (Я попытался найти встроенную функцию, чтобы сделать это, но не смог найти то, что мне нужно).Скопируйте диапазон до пустой строки и вставьте в новый лист

Что макрос нужно сделать это:

  1. Activate «Sheet3» и удалите все строки, начинающиеся с строки 3 и вниз

  2. Перейти в «Лист1» и скопировать все строки, начинающиеся с (A3: P3) и скопировать до тех пор, пока первая строка с нулевым значением в столбце A не будет включена.

  3. Перейдите в «Sheet3» и вставьте эти строки, начиная с A3.

  4. Перейдите в «Лист2» ​​и скопируйте все строки, начиная с (A3: P3), и скопируйте до тех пор, пока первая строка с нулевым значением в столбце A не будет включена.

  5. Перейти в «Лист3» и мимо этих строк, начиная с первой пустой ячейки в столбце A.

Я новичок в VBA, но мне удалось найти следующий код и я Я пытаюсь заставить его работать для выполнения вышеуказанных требований.

Sub CreateCombinedSheet() 
    lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row 
    ActiveSheet.Range("A3", ActiveSheet.Cells(lastRow, 12)).Copy 
End Sub 

Я пытаюсь написать его части и протестировать его, как я иду, но я уже получаю ошибку 1004 с этим:

Application-defined or object-defined error

Любые мысли о том, как я должен работать это?

Благодаря

ответ

0

Activate «Sheet3» и удалить все строки, начинающиеся с строки 3 и вниз

Вам не нужно активировать лист, чтобы очистить ряды. Вы можете видеть, THIS Вы можете прямо сказать

Sheets("BlahBlah").Rows("3:200").ClearContents 

Я жёстко 200 в качестве примера. Чтобы найти конец строк, см. Ниже.

Перейдите в «Лист1» и скопируйте все строки, начиная с (A3: P3), и скопируйте до тех пор, пока первая строка с нулевым значением в столбце A не будет включена.

То же самое для этого. Вам не нужно идти на этот лист. Вам нужно сначала найти последнюю строку. Я вижу, что вы строит строки в своем коде. Вам не нужно это делать. xl2007 + теперь имеет 1048576 строк. Используйте .Rows.Count Пожалуйста, см THIS

Перейти в «Лист3» и вставить эти строки, начиная с А3.

Чтобы вставить, вам снова не нужно идти на этот лист.Вы можете прямо сказать

rng.Copy Sheet("BlahBlah").Rows(3) 

Ваша точка 4 и 5 - это всего лишь варианты вышеизложенного. Уверен, теперь вы можете взять это отсюда :). Если вы все еще сталкиваетесь с каким-либо затруднением, просто отправьте сообщение обратно.

Смежные вопросы