Ошибка выполнения 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 лет), поэтому я не знаком с ошибками кодирования.
Спасибо!
- VBA Excel Копировать / Вставить Конкретный диапазон от нескольких листов
- Ошибка выполнения 1004 вызова макросов в другой книге, которая была открыта через vba
- Ошибка проверки времени выполнения # 0 - значение ESP было неправильно сохранено
- Ошибка времени выполнения VBA Excel VBA на объекте Range
- Ошибка времени выполнения 1004; Обработка ошибок
- Ошибка VBA Runtime 1004 в Range.Clear
- Создание листов в двух разных книгах и ихменование после списка в этой книге
- Ошибка выполнения 1004 при вводе формулы в ячейку
- #REF! вставлен как значение, но не рассматривается как таковое при циклировании
- Excel 2003, промежуточная ошибка VBA
- доступ к подпрограммам один раз, затем Ошибка '91': переменная объекта не задана
- Попытка запуска функции вызывает ошибку времени выполнения 424
- проверка того, что файл с заголовком пуст
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