«Подстрочный вне диапазона» означает, что вы обращаетесь массив/сбор за его границ.
Workbooks(i).Worksheets("Sheet2").Range("A1").Value = Workbooks(i).Worksheets("Sheet1").Range("B9:E111").Value
Я подсчитываю несколько разных мест в одной инструкции, которые могли бы сбрасывать эту ошибку. Разделите его.
Dim book As Workbook
' if it blows up here, check how many books you have open:
Set book = Workbooks(i) 'consider looping from 1 To Workbooks.Count instead of 1 To 6
Dim source As Worksheet
' if it blows up here, check the filename of the book and whether it has a "Sheet1":
Set source = book.Worksheets("Sheet1")
Dim destination As Worksheet
' if it blows up here, check the filename of the book and whether it has a "Sheet2":
Set destination = book.Worksheets("Sheet2")
' when it blows up here, consider exactly what you're trying to do:
destination.Range("A1").Value = source.Range("B9:E111").Value
Последняя инструкция выглядит подозрительной для меня. Если вы пытаетесь вставить Sheet1!B9:E111
в Sheet2!A1
, рассмотрите возможность использования Copy
+ PasteSpecial
, как в Shai Rado's answer.
Если вы имеете в виду перебирать все открытые книги, рассмотрит For Each
петли вместо:
Dim book As Workbook
For Each book In Workbooks
'...
Next
Вы пытаетесь скопировать несколько ячеек в один. Может быть, попробуйте удалить значение с обоих концов? Или сделать диапазон в левой половине утверждения того же размера, что и право? – Rdster
У вас открыто 6 книг? У всех у них есть «Лист2» и «Лист1»? Также вы пытаетесь поместить значение многих ячеек в одно. –
Rdster- Я попытался установить тот же диапазон (A1: D103), но такую же ошибку. –