Добрый день, Помогите разобраться, в чем ошибка. Есть простой код на добавление столбца левее помеченного "!!!" и копирование из столбца слева в новый.
Код
Sub Копия_столбца()
Dim Col1
Dim LastRow1
Col1 = Range("A1:XX1").Find("!!!").Column
'Col1 = Cells(1).Find("!!!").Column
Columns(Col1).Select
Selection.Insert Shift:=xlToRight
LastRow1 = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Range(Cells(1, Col1 - 1), Cells(LastRow1, Col1 - 1)).Select
Selection.AutoFill Destination:=Range(Cells(1, Col1 - 1), Cells(LastRow1, Col1)), Type:=xlFillDefault
End Sub
Применяется ко многим однотипным файлам. Иногда вызывает ошибку 1004 Method Range of object '_Global' failed Если закомментить строку Range и использовать Cells, то: ошибка 91 Object Variable or With block variable not set
Пожалуйста, поясните, что я не верно обозначил. Пример во вложении.
Собственно обошел проблему с Range() задав диапазон поиска в столбцах активной областью. Тем не менее причину ошибки в оригинале и возможно ли использовать вариант Cells(), я так и не понял. Буду благодарен ответу.
Код
Sub Копия_Столбца()
Dim Col1
Dim LastRow1
Dim LastCol1
LastCol1 = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
Col1 = Range(Cells(1, 1), Cells(1, LastCol1)).Find("!!!").Column
'Col1 = Cells(1).Find("!!!").Column
Columns(Col1).Select
Selection.Insert Shift:=xlToRight
LastRow1 = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Range(Cells(1, Col1 - 1), Cells(LastRow1, Col1 - 1)).Select
Selection.AutoFill Destination:=Range(Cells(1, Col1 - 1), Cells(LastRow1, Col1)), Type:=xlFillDefault
End Sub
По Range() дело в формате файла, сразу не обратил внимания, оригинал, в котором писался код и работает макрос имеет .xlsm, поэтому там я с проблемой и не столкнулся.
Sub Macro1()
Dim LastColumn As Long, i As Long
LastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
For i = LastColumn To 1 Step -1
If Cells(1, i) = "!!!" Then Columns(i).Insert
Next
End Sub