последний столбец (длинный или строковый) с .copy функцией

Я пытаюсь использовать фрагмент кода, который я нашел здесь .

Sub foo() Dim x As Workbook Dim y As Workbook Dim wbname As String Dim lastcol As Long wbname = Replace(ActiveWorkbook.name, ".xlsx", "") '## Open both workbooks first: Set x = Workbooks.Open("N:\blah\deposit\" & wbname & "*.xlsx") lastcol = Cells(1, Columns.Count).End(xlToLeft).Column mycol = GetColumnLetter(lastcol) 'Now, copy what you want from x: x.Sheets("sheet1").Range("mycol:mycol").Copy x.Close 'Now, paste to y worksheet: y.Sheets("sheet1").Range("mycol:mycol").PasteSpecial End Sub Function GetColumnLetter(colNum As Long) As String Dim vArr vArr = Split(Cells(1, colNum).Address(True, False), "$") GetColumnLetter = vArr(0) End Function 

Кажется, я не могу найти, как скопировать последний столбец. Он говорит, что индекс ошибки 9 выходит за пределы допустимого диапазона. Я попробовал x.Sheets("sheet1").Columns(lastcol).Copy x.Sheets("sheet1").Range("mycol").copy , x.Sheets("sheet1").Range(mycol) и x.Sheets("sheet1").Range(Columns(mycol)).Copy

Есть ли что-то еще, что я должен был сделать или объявить? Я серьезно не понимаю, почему это не работает. 🙁

Чтобы значительно упростить код

 Sub foo() Dim x As Workbook Dim y As Workbook Dim wbname As String Dim lastcol As Long wbname = Replace(ActiveWorkbook.name, ".xlsx", "") '## Open both workbooks first: Set x = Workbooks.Open("N:\blah\deposit\" & wbname & "*.xlsx") lastcol = Cells(1, Columns.Count).End(xlToLeft).Column 'Now, copy what you want from x: x.Sheets("sheet1").Columns(lastcol).Copy 'Now, paste to y worksheet: y.Sheets("sheet1").Columns(lastcol).PasteSpecial x.Close End Sub 

Вам не нужна функция для достижения того, что вы пытаетесь

Давайте будем гением компьютера.