Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вызов процедуры для листа - subscript out of range / 12 сообщений из 12, страница 1 из 1
02.12.2013, 20:24
    #38486593
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
Вызывается следующая процедура для одного листа - проходит, для другого - Run-time error '9': Subscript out of range

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
Public Sub FillTablesWithParameters(gvarDate As Date)
Dim strWorkbookName As String
Dim xlWorkbook As Excel.Workbook
Dim intCountSheets As Integer
  
On Error GoTo ErrorHandler
    
    Application.ScreenUpdating = False
  
    strWorkbookName = ThisWorkbook.Name
    Set xlWorkbook = Application.Workbooks(strWorkbookName)
    
    'зададим параметры получения массива с соответствующего листа книги 'Общая'
        
    For intCountSheets = 1 To xlWorkbook.Sheets.Count
        'получим имя листа
        gstrSheetName = xlWorkbook.Sheets(intCountSheets).Name
           
        Select Case gstrSheetName
            Case "свод_табл", "протокол", "свод_журнал"
            
            Case Else   'на остальных листах нужна таблица с параметрами (фотометрические), она же в усеченном виде (титриметрические) или
                        'установление приборов в первом блоке
                
                gvarFileAndProcedureNames = "'" & strWorkbookName & "'" & "!FillTableWithParametersFromArray"
                'вызовем процедуру, где будет заполнен массив
                [color=yellow]Application.Run "Общая.xls!FormingArrayWithParameters", gvarFileAndProcedureNames, gstrSheetName, gvarDate[/color]
                     
        End Select
    Next
    
    'вызовем процедуру, где будет заполнен рекордсет с исполнителями
    gvarFileAndProcedureNames = "'" & strWorkbookName & "'" & "!FillListWithPersonsFromRecordset"
    Application.Run "Общая.xls!FormingRecordsetWithPersons", gvarFileAndProcedureNames
    
    Application.ScreenUpdating = True
    
ErrorHandlerExit:
    Exit Sub
ErrorHandler:
    Application.ScreenUpdating = True
    MsgBox "FillTablesWithParameters Ошибка №:" & Err.Number & ";Описание:" & Err.Description
    Resume ErrorHandlerExit
End Sub


В чем может быть дело?
...
Рейтинг: 0 / 0
02.12.2013, 21:08
    #38486636
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
А указать хотя бы, на каком операторе ошибка, религия не позволила?
...
Рейтинг: 0 / 0
02.12.2013, 21:21
    #38486648
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
Ошибка-то явно внутри процедуры FormingRecordsetWithPersons. Что у Вас в ней происходит? Может Вы закрываете подключение, книгу еще что, что впоследствии очень нужно для следующего вызова.
...
Рейтинг: 0 / 0
02.12.2013, 23:29
    #38486740
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
AkinaА указать хотя бы, на каком операторе ошибка, религия не позволила?
Ой! Мне показалось, что цветом будет выделена строка, где происходит ошибка.
Прикладываю файлы.
Открыть сначала 'Общая', потом - 'Расчет и Сводный' (ответив отрицательно на вопрос об обновлении показателей).
В 'Расчет и Сводный' на листе 'протокол' в ячейке I6 попробовать заново внести дату - для листа 'вв (Г2)' вылетает ошибка.
...
Рейтинг: 0 / 0
02.12.2013, 23:30
    #38486741
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
...
Рейтинг: 0 / 0
02.12.2013, 23:42
    #38486751
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
КД,

Мы все радостно побежали взламывать пароль на проекты, чтобы помочь Вам.
...
Рейтинг: 0 / 0
02.12.2013, 23:50
    #38486758
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
Тьфу. На работе все его знают, и я забыл, что здесь - не работа. :)
Пароль: 1
...
Рейтинг: 0 / 0
03.12.2013, 00:02
    #38486766
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
КД,

У Вас в процедуру "FormingArrayWithParameters" передается имя листа "вв (Г2)" и в строке
Код: vbnet
1.
Set xlSheet = xlWorkbook.Sheets(gstrSheetName)


идет попытка назначить переменной значение этого листа. Только в книге "Общая" нет такого листа и макрос спотыкается. Всю логику выполнения не смотрел - так что Вам искать, где Вы вызываете циклично эту процедуру таким образом, что переменной xlWorkbook назначается не та книга.
...
Рейтинг: 0 / 0
03.12.2013, 00:32
    #38486790
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
The_PristКД,

У Вас в процедуру "FormingArrayWithParameters" передается имя листа "вв (Г2)" и в строке
Код: vbnet
1.
Set xlSheet = xlWorkbook.Sheets(gstrSheetName)


идет попытка назначить переменной значение этого листа. Только в книге "Общая" нет такого листа и макрос спотыкается. Всю логику выполнения не смотрел - так что Вам искать, где Вы вызываете циклично эту процедуру таким образом, что переменной xlWorkbook назначается не та книга.
1. В процедуру "FormingArrayWithParameters" передается gvarDate
2. Имя очередного листа присваивается в цикле:
Код: vbnet
1.
2.
3.
4.
5.
For intCountSheets = 1 To xlWorkbook.Sheets.Count
        'получим имя листа
        gstrSheetName = xlWorkbook.Sheets(intCountSheets).Name
        ....
Next


Но даже если бы было так, как Вам показалось, почему все хорошо проходит с листом 'вв (Г1)'?
...
Рейтинг: 0 / 0
03.12.2013, 01:08
    #38486800
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
КД,

Ну раз генерал сказал, что мне показалось...Разрешите откланяться, сударь. Не смею больше встревать.
Но посоветовал бы все же пошагово пройтись по процедуркам со снятым паролем с проектов. и посмотреть, может не одному мне чего-то там показалось...
...
Рейтинг: 0 / 0
03.12.2013, 01:10
    #38486803
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
То есть, пардон, это я не туда посмотрел...
Но ведь в книге 'Общая' и листа 'вв (Г1)' нет, а вызвать процедуру это не помешало.
...
Рейтинг: 0 / 0
03.12.2013, 01:11
    #38486804
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры для листа - subscript out of range
В общем, разобрался.
Спасибо огромное!!!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вызов процедуры для листа - subscript out of range / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]