2013-04-10 3 views
0

** Я новичок в VB, и я получил и ошибку 9, индекс вне диапазона. Ошибка указала, что это было в приведенной ниже процедуре. Пожалуйста, дайте мне знать, что может быть проблемой. Я ценю вашу помощьVB - Подзаголовок за пределами допустимого диапазона, ошибка 9

Private Sub RebuildGrid() 
    Const c_strProcedureName As String = "RebuildGrid" 
    Dim intIndex As Integer 

    On Error GoTo Error_Handler 

    For intIndex = 0 To g_intNumNucDataFields - 1 
     grdNuclides.Columns(intIndex).DataField = ga_strNucFieldName(intIndex) 
     grdNuclides.Columns(intIndex).Visible = False 

     If StrComp(ga_strNucFieldFormat(intIndex), "None", vbTextCompare) <> 0 Then 
      grdNuclides.Columns(intIndex).NumberFormat = ga_strNucFieldFormat(intIndex) 
     End If 

     grdNuclides.Columns(intIndex).Width = 1400 

     If StrComp(LCase$(ga_strNucFieldUnits(intIndex)), "none", vbTextCompare) = 0 Then 
      grdNuclides.Columns(intIndex).Caption = ga_strNucFieldTitle(intIndex) 
     Else 
      grdNuclides.Columns(intIndex).Caption = ga_strNucFieldTitle(intIndex) & _ 
      " " & vbCr & "(" & ga_strNucFieldUnits(intIndex) & ") " 
     End If 
     grdNuclides.Columns(intIndex).FooterText = "Reference" 
    Next intIndex 

    Exit Sub 
Error_Handler: 

    gud_PrgErr.Number = Err.Number 
    gud_PrgErr.Severity = 5 
    gud_PrgErr.Description = Err.Description 
    gud_PrgErr.Module = c_strModuleName 
    gud_PrgErr.Procedure = c_strProcedureName 
    Call Display_UI_Error 

End Sub 

Private Sub mnuFileExit_Click() 
    Unload Me 
End Sub 
+0

Какая строка выдает ошибку? Что делает 'ga_strNucFieldFormat'? – Brad

+0

Кажется, у вас в вашей процедуре есть несколько массивов (например: 'ga_strNucFieldFormat'), определение которых мы не видим. Ваша ошибка указывает на то, что вы пытаетесь получить элемент, который не существует в любом из этих массивов. Когда вы начинаете цикл, попробуйте проверить 'LBound' и' Ubound', что-то вроде этого: 'Для intIndex = LBound (ga_strNucFieldName) To Ubound (ga_strNucFieldName)' –

ответ

0

Убедитесь g_intNumNucDataFields не выше, чем число столбцов (например grdNuclides.Columns.Count).

Вы также можете попробовать прокомментировать обработку ошибок, а затем запустить его, чтобы узнать, не получите ли номер строки на ошибке.

Смежные вопросы