0

2 つの Subs があり、どちらも引数として配列を受け取ります。1 つは正常に動作し、もう 1 つは次のようになります: コンパイル エラー: 型の不一致: 配列またはユーザー定義型が必要です。以下のコードでは、「InitializeArray」が機能し、「PresentTotalRow」が機能しません。誰でも理由を理解できますか?

Sub PresentTotalRow(nCells As Integer, totalProductsPerDay() As Integer)
    row = nCells + MatrixRowOffset + 2
    Range(Cells(row, 2), Cells(row, 8)) = totalProductsPerDay
End Sub

Sub InitializeArray(ByRef arr() As Long)
    Dim N As Long
    For N = LBound(arr) To UBound(arr)
        arr(N) = 0
    Next N
End Sub


Sub ReadTxtFile()
    .....

    Dim totalProductsPerDay(0 To 6) As Long
    InitializeArray totalProductsPerDay

    Dim filePath As String
    filePath = "C:\work\Documents\input.txt"

    Dim oFS As TextStream
    If oFSO.FileExists(filePath) Then

        Set oFS = oFSO.OpenTextFile(filePath)
        ......
        i = 1
        Do While Not oFS.AtEndOfStream

            line = oFS.ReadLine
            ....
            nCells = calcNCells                

            totalProductsCounter = GetTotalProductsCounter()
            totalProductsPerDay(Day) = totalProductsPerDay(Day) + totalProductsCounter

            i = i + 1
        Loop

        PresentTotalRow nCells, totalProductsPerDay
        oFS.Close
    Else
        MsgBox "The file path is invalid.", vbCritical, vbNullString
    Exit Sub
End If

Exit Sub

End Sub

ありがとう、リー

4

1 に答える 1

2
Sub PresentTotalRow(nCells As Integer, totalProductsPerDay() As Integer)
    row = nCells + MatrixRowOffset + 2
    Range(Cells(row, 2), Cells(row, 8)) = totalProductsPerDay
End Sub

2 番目の引数には整数配列が必要です

PresentTotalRow nCells, totalProductsPerDay

ここで2番目の引数として長い配列を渡しています

于 2013-10-22T09:42:09.780 に答える