0

私は現在、いくつかのExcelワークシート操作を行っているvbaソフトウェアの小さな部分に取り組んでいます。現在、以下のコードのループの最初の反復中に indexOutOfRangeException が発生しています。これをデバッグで実行したところ、配列が要求されたインデックスに値を持っていることがわかりますが、この例外が引き続き発生します。

 Private Sub AddReportQuestions(ByRef ReportName As String, ByRef i As Integer, 
                               ByRef domainStart As Integer, ByRef domainEnd As Integer, 
                               ByRef xlReportWorkSheet As Excel.Worksheet,
                               ByRef xlQuestionWorkSheet As Excel.Worksheet)
    Dim row As Integer
    row = 0

    Dim maxPrintableRow = ((domainEnd - domainStart) * 4) + 7
    Dim maxQuestions = (domainEnd - domainStart) + 1

    Dim reportRange = xlReportWorkSheet.Range(xlReportWorkSheet.Cells(7, (i * 10) + 1), xlReportWorkSheet.Cells(maxPrintableRow, (i * 10) + 10))
    Dim questionRange = xlQuestionWorkSheet.Range("C" & domainStart & ":I" & domainEnd)

    Dim questionArray(maxQuestions, 7) As Object
    Dim reportArray(maxPrintableRow + 1, 10) As Object

    questionArray = questionRange.Value

    For j = 0 To maxQuestions
        ' Question
        reportArray(row, 0) = questionArray(j, 0)

        ' Resize Row Height
        xlReportWorkSheet.Rows(row + 7).RowHeight = 45

        row += 1

        ' Response and Comment
        reportArray(row, 0) = questionArray(j, 1)
        reportArray(row, 2) = questionArray(j, 4)

        ' Resize Row Height
        xlReportWorkSheet.Rows(row + 7).RowHeight = 45

        row += 1

        ' Likelihood and Consequence
        reportArray(row, 0) = "Likelihood:"
        reportArray(row, 2) = questionArray(j, 2)
        reportArray(row, 4) = "Consequence:"
        reportArray(row, 6) = questionArray(j, 3)

        row += 1

        ' Divider line
        reportArray(row, 0) = "________________________________________________________________________________________________________________________"

        row += 1
    Next

    reportRange.Value = reportArray
End Sub

questionArray は、このコードの違反者です。

4

1 に答える 1

0

questionArrayandをオブジェクトとして宣言しreportArrayていますが、それらを変数のように扱っています。宣言文を次のように変更します

Dim questionArray as variant
Dim reportArray(maxPrintableRow + 1, 10) As String
于 2015-02-18T15:17:56.517 に答える