У меня 3 файла, которые находятся в открытом виде.
[vba]
Код
Sub exercise()
Dim r3, r4 As Range Dim lcolumnplan, lastrowplan As Long Dim lastrow, lcolumn As Long
Set w2 = Workbooks("Book4.xlsm") Set w3 = Workbooks("book1.xlsm")
With w2 lcolumn = .Sheets("forecast").Cells(2, Columns.Count).End(xlToLeft).Column lastrow = .Sheets("forecast").Cells(Rows.Count, 1).End(xlUp).Row Set r3 = .Sheets("forecast").Range(Cells(2, 2), Cells(lastrow, lcolumn)) End With
With w3 lcolumnplan = .Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column lastrowplan = .Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row Set r4 = .Sheets("Sheet1").Range(Cells(1, 1), Cells(lastrowplan, lcolumnplan)) End With
End Sub
[/vba]
В r4 выдает оштбку 1004: Application-defined or object-defined error
Листы unprotect: Когда делаю пошагово: если я открываю Protect sheet.. и закрываю в w2 и после r3 я открываю Protect sheet в w3, то все работает и ошибок не выдает. Как можно решить эту проблему БЕЗ открываний-закрываний.
У меня 3 файла, которые находятся в открытом виде.
[vba]
Код
Sub exercise()
Dim r3, r4 As Range Dim lcolumnplan, lastrowplan As Long Dim lastrow, lcolumn As Long
Set w2 = Workbooks("Book4.xlsm") Set w3 = Workbooks("book1.xlsm")
With w2 lcolumn = .Sheets("forecast").Cells(2, Columns.Count).End(xlToLeft).Column lastrow = .Sheets("forecast").Cells(Rows.Count, 1).End(xlUp).Row Set r3 = .Sheets("forecast").Range(Cells(2, 2), Cells(lastrow, lcolumn)) End With
With w3 lcolumnplan = .Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column lastrowplan = .Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row Set r4 = .Sheets("Sheet1").Range(Cells(1, 1), Cells(lastrowplan, lcolumnplan)) End With
End Sub
[/vba]
В r4 выдает оштбку 1004: Application-defined or object-defined error
Листы unprotect: Когда делаю пошагово: если я открываю Protect sheet.. и закрываю в w2 и после r3 я открываю Protect sheet в w3, то все работает и ошибок не выдает. Как можно решить эту проблему БЕЗ открываний-закрываний.Jekaterina
Сообщение отредактировал Jekaterina - Воскресенье, 26.03.2017, 10:10
With w2.Sheets("forecast") lcolumn = .Cells(2, Columns.Count).End(xlToLeft).Column lastrow = .Cells(Rows.Count, 1).End(xlUp).Row Set r3 = .Range(.Cells(2, 2), .Cells(lastrow, lcolumn)) End With
With w3.Sheets("Sheet1") lcolumnplan = .Cells(1, Columns.Count).End(xlToLeft).Column lastrowplan = .Cells(Rows.Count, 1).End(xlUp).Row Set r4 = .Range(.Cells(1, 1), .Cells(lastrowplan, lcolumnplan)) End With
[/vba]
наверное так: [vba]
Код
With w2.Sheets("forecast") lcolumn = .Cells(2, Columns.Count).End(xlToLeft).Column lastrow = .Cells(Rows.Count, 1).End(xlUp).Row Set r3 = .Range(.Cells(2, 2), .Cells(lastrow, lcolumn)) End With
With w3.Sheets("Sheet1") lcolumnplan = .Cells(1, Columns.Count).End(xlToLeft).Column lastrowplan = .Cells(Rows.Count, 1).End(xlUp).Row Set r4 = .Range(.Cells(1, 1), .Cells(lastrowplan, lcolumnplan)) End With
Всюду перед cells указывайте лист чьё это. И в общем случае и перед rows/columns.count тоже, т.к. если вдруг этот код будет выполнен при активном файле xls - может быть брак или ошибка.
Всюду перед cells указывайте лист чьё это. И в общем случае и перед rows/columns.count тоже, т.к. если вдруг этот код будет выполнен при активном файле xls - может быть брак или ошибка.Hugo