powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вызов процедуры для листа - subscript out of range
12 сообщений из 12, страница 1 из 1
Вызов процедуры для листа - subscript out of range
    #38486593
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вызывается следующая процедура для одного листа - проходит, для другого - 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
Вызов процедуры для листа - subscript out of range
    #38486636
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А указать хотя бы, на каком операторе ошибка, религия не позволила?
...
Рейтинг: 0 / 0
Вызов процедуры для листа - subscript out of range
    #38486648
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка-то явно внутри процедуры FormingRecordsetWithPersons. Что у Вас в ней происходит? Может Вы закрываете подключение, книгу еще что, что впоследствии очень нужно для следующего вызова.
...
Рейтинг: 0 / 0
Вызов процедуры для листа - subscript out of range
    #38486740
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaА указать хотя бы, на каком операторе ошибка, религия не позволила?
Ой! Мне показалось, что цветом будет выделена строка, где происходит ошибка.
Прикладываю файлы.
Открыть сначала 'Общая', потом - 'Расчет и Сводный' (ответив отрицательно на вопрос об обновлении показателей).
В 'Расчет и Сводный' на листе 'протокол' в ячейке I6 попробовать заново внести дату - для листа 'вв (Г2)' вылетает ошибка.
...
Рейтинг: 0 / 0
Вызов процедуры для листа - subscript out of range
    #38486741
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Вызов процедуры для листа - subscript out of range
    #38486751
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КД,

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

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


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

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


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