2013-10-02 4 views
0

Я просто пытаюсь скопировать содержимое одного ВБ в другойVBA - Выбор диапазона - Серьезные неприятности

strColNos = Range(Cells(65536, rngSMonthYr.Column).Address(False, False)).End(xlUp).Row 
For intLastCell = 2 To strColNos 
    strCell1 = Cells(intLastCell, rngSMonthYr.Column).Address(False, False) 
    strCell2 = Cells(intLastCell, rngDMonthYr.Column).Address(False, False) 

    Workbooks(wkbSource).Sheets(wsSource).Range(strCell1).Copy _ 
     Destination:=Workbooks(wkbDestination).Sheets(wsDestination).Range(strCell2) 
Next intLastCell 

strCell1 имеет значение «D2» (Источник книги), strCell2 имеет значение «F2» (Destination Book)

rngSMonthYr, rngDMonthYr - это в основном окна ввода, где пользователи могут выбрать конкретный месяц из исходных и целевых листов. Мне нужно скопировать все строки из выбранного столбца источника в выбранный столбец назначения.

Любая помощь будет высоко оценена.

Спасибо, Аарон

+0

привет, можете ли вы показать остальную часть скрипта с полями ввода, и если у вас есть ошибка (-ы), какие ошибки вы получите? – L42

+0

вам не нужно открывать рабочую книгу для ссылки на данные. [См. Мой ответ] (http://stackoverflow.com/questions/17837103/reference-data-in-closed-excel-sheet/17838174#17838174), в котором объясняется, как извлекать данные из закрытой книги. –

ответ

0

Нет необходимости перебрать каждую клетку. Кроме того, вы можете адресовать диапазон, не преобразовывая их в адресные строки все время. Этот код должен делать то, что вам нужно:

intLastRow = Cells(65536, rngSMonthYr.Column).End(xlUp).Row 
Sheet1.Cells(2, rngSMonthYr.Column).Resize(intLastRow - 1).Copy _ 
    Sheet2.Cells(2, rngDMonthYr.Column).Resize(intLastRow - 1) 

Я не уверен, если вам нужно использовать rngSMonthYr.Column - или если rngSMonthYr достаточно. Если ячейка содержит номер столбца, .Column ошибочна и ее необходимо опустить.

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