Ошибка выполнения 9 в цикле

У меня есть три книги; все с информацией по тем же политикам, но из разных документов. Я пытаюсь скопировать значение одной и той же ячейки с каждого листа, который имеет то же имя рабочего листа в книгах 1 и книге 3. Это код, который у меня есть:

Sub foo() Dim wbk1 As Workbook Dim wbk2 As Workbook Dim wkb3 As Workbook Dim shtName As String Dim i As Integer Set wkb1 = Workbooks.Open("C:\Users\lliao\Documents\Trad Reconciliation.xlsx") Set wkb2 = Workbooks.Open("C:\Users\lliao\Documents\TradReconciliation.xlsx") Set wkb3 = Workbooks.Open("C:\Users\lliao\Documents\Measure Trad Recon LS.xlsx") shtName = wkb2.Worksheets(i).Name For i = 2 To wkb2.Worksheets.Count wkb2.Sheets(shtName).Range("D3").Value = wkb1.Sheets(shtName).Range("D2") wkb2.Sheets(shtName).Range("E3").Value = wkb1.Sheets(shtName).Range("E2") wkb2.Sheets(shtName).Range("F3").Value = wkb1.Sheets(shtName).Range("F2") wkb2.Sheets(shtName).Range("D4").Value = wkb3.Sheets(shtName).Range("D2") wkb2.Sheets(shtName).Range("E4").Value = wkb3.Sheets(shtName).Range("E2") wkb2.Sheets(shtName).Range("F4").Value = wkb3.Sheets(shtName).Range("F2") Next i End Sub 

Я не понимаю, как я неправильно использую индекс. Это мой первый код VBA (первый раз за 5 лет), поэтому я не знаком с ошибками кодирования.

Спасибо!

 Dim i As Integer Set wkb1 = Workbooks.Open("C:\Users\lliao\Documents\Trad Reconciliation.xlsx") Set wkb2 = Workbooks.Open("C:\Users\lliao\Documents\TradReconciliation.xlsx") Set wkb3 = Workbooks.Open("C:\Users\lliao\Documents\Measure Trad Recon LS.xlsx") shtName = wkb2.Worksheets(i).Name 

Переменная i объявляется, но используется до ее назначения – поэтому ее значение является неявным 0 .

С коллекциями VBA, основанными на 1, это делает wkb2.Worksheets(i) недоступным.

 Dim i As Integer i = 1 '... shtName = wkb2.Worksheets(i).Name 

Исправит это.

Вы, вероятно, хотите переместить его внутри цикла.

возможно, вы после этого:

 For i = 2 To wkb2.Worksheets.Count wkb2.Sheets(i).Range("D3:F3").Value = wkb1.Sheets(i).Range("D2:F2") wkb2.Sheets(i).Range("D4:F4").Value = wkb3.Sheets(i).Range("D2:F2") Next i 
  • Sumifs и Error 1004: Определено приложение или Object Defined
  • Ошибка времени выполнения 91 - Excel vba из Access
  • 1004 при записи формулы в ячейку с использованием VBA-Excel
  • Не удалось установить видимую ошибку свойства при скрытии рамки
  • Ошибка времени выполнения «438» «Объект не поддерживает это свойство или метод»
  • Ошибка несоответствия типа
  • Ошибка времени выполнения 5 после успешных вычислений
  • Ввод Excel VBA в SAP и извлечение электронной таблицы - застрял в Excel
  • Ошибка времени выполнения «13» «Несоответствие типа» в случае If Then Statement
  • Свойство Cells - Ошибка времени выполнения 91
  • Код перестает работать после ошибки
  • Interesting Posts

    Строка соединения OLEDB не работает – кроме случаев, когда Excel открыт …?

    Файл Excel downloadeb от Google Chrome

    VBA Excel Вставка AutoSum в динамически созданный стол

    Excel VBA – Прокрутите электронные таблицы и заготовьте другой цикл

    Сообщение об ошибке «внешняя таблица не находится в ожидаемом формате», когда я пытался загрузить файл в программу C #

    В Excel 2007, как я могу индексировать индексы SUMIFS из нескольких столбцов из именованного диапазона?

    Вставить логику Excel в код .NET для сложных формул

    Паровые ячейки в Excel

    Excel: горизонтальная полоса хода с двумя осями x?

    Запись чисел в файл python

    Поиск определенной последовательности букв в строке таблицы Excel с использованием Python 2.7 и xlrd

    Условное вычитание из нескольких ячеек

    Почему этот Context.Sync не работает?

    Можно ли использовать UDF в теле документа MS WORD?

    Множественные графики в одной диаграмме с использованием VBA Excel

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