Здорово, пока писала первый вопрос, ответ на который найти отчаялась, поняла, почему дебагер считает, что индекс вышел за пределы массива (Subscript out of range (Error 9))
Я хочу создать в папке кучу новых книг, количество их равняется значению, которое находится в последней заполненной ячейке 10го столбца в другой книге.
[vba]
Code
Sub MyNew()
Dim i As Long Dim TNVrow, TNVcol As Integer Application.ScreenUpdating = 0
Workbooks("Классификация").Activate TNVrow = Cells(Rows.Count, 10).End(xlUp).Row 'выясняю номер строки последней ячейки в нужном столбце TNVcol = Cells(TNVrow - 1, 10).Value 'запоминаю значение по выясненному адресу ячейки - количество создаваемых книг TNVname = Cells(TNVrow - 1, 9).Value 'захватываю значение по соседству для формирования имени новой книги
For i = 1 To TNVcol iStr = CStr(i) flName$ = folderAdress$ & iStr & "ТНВ" & TNVname & ".xls" 'формирую имя книги Workbooks("workTNV").SaveCopyAs flName$ 'и вот тут начинают вываливаться проблемы Workbooks(flName$).Close 'особенно тут Next
Workbooks("Классификация").Close
Application.ScreenUpdating = 1 End Sub
[/vba]
Очень долго не могла понять, в чём же дело. Какой массив, какой индекс? Оказывается, дело было в том, что я пыталась закрывать создаваемые книги: Workbooks(flName$).Close Плохая была идея: как можно закрыть то, что открыто не было?!
Но ещё одна проблема осталась: как мне достоверно определять последнюю заполненную (!) ячейку в 10 столбце Классификации.xls TNVrow = Cells(Rows.Count, 10).End(xlUp).Row (пробовала ещё варианты: 'TNVrow = Cells(65536, "J").End(xlUp).Row 'TNVrow = Columns("J").End(xlDown).Row это всё функциональные синонимы оказались) сейчас туда попадает последняя ячейка, но содержащая значение пусто.
Как правильно сформулировать условие для проверки этого? или такая задача решается иначе?
Здравствуйте, дорогие Форумчане!
Здорово, пока писала первый вопрос, ответ на который найти отчаялась, поняла, почему дебагер считает, что индекс вышел за пределы массива (Subscript out of range (Error 9))
Я хочу создать в папке кучу новых книг, количество их равняется значению, которое находится в последней заполненной ячейке 10го столбца в другой книге.
[vba]
Code
Sub MyNew()
Dim i As Long Dim TNVrow, TNVcol As Integer Application.ScreenUpdating = 0
Workbooks("Классификация").Activate TNVrow = Cells(Rows.Count, 10).End(xlUp).Row 'выясняю номер строки последней ячейки в нужном столбце TNVcol = Cells(TNVrow - 1, 10).Value 'запоминаю значение по выясненному адресу ячейки - количество создаваемых книг TNVname = Cells(TNVrow - 1, 9).Value 'захватываю значение по соседству для формирования имени новой книги
For i = 1 To TNVcol iStr = CStr(i) flName$ = folderAdress$ & iStr & "ТНВ" & TNVname & ".xls" 'формирую имя книги Workbooks("workTNV").SaveCopyAs flName$ 'и вот тут начинают вываливаться проблемы Workbooks(flName$).Close 'особенно тут Next
Workbooks("Классификация").Close
Application.ScreenUpdating = 1 End Sub
[/vba]
Очень долго не могла понять, в чём же дело. Какой массив, какой индекс? Оказывается, дело было в том, что я пыталась закрывать создаваемые книги: Workbooks(flName$).Close Плохая была идея: как можно закрыть то, что открыто не было?!
Но ещё одна проблема осталась: как мне достоверно определять последнюю заполненную (!) ячейку в 10 столбце Классификации.xls TNVrow = Cells(Rows.Count, 10).End(xlUp).Row (пробовала ещё варианты: 'TNVrow = Cells(65536, "J").End(xlUp).Row 'TNVrow = Columns("J").End(xlDown).Row это всё функциональные синонимы оказались) сейчас туда попадает последняя ячейка, но содержащая значение пусто.
Как правильно сформулировать условие для проверки этого? или такая задача решается иначе?flutesa