0

VBA では、簡単にシート\範囲を配列に取り込んで操作し、シート\範囲に戻すことができます。ただし、VB.Netでこれを行うのに問題があります。

これが私のコードです。

Rng = .Range("a4", .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count))
Dim SheetArray(,) As Object = DirectCast(Rng.Value(Excel.XlRangeValueDataType.xlRangeValueDefault), Object(,))
For X As Integer = 0 To SheetArray.GetUpperBound(0)
    If IsNothing(SheetArray(X, 0)) Then Exit For
    SheetArray(X, 6) = SheetArray(X, 3)
    SheetArray(X, 7) = CDbl(SheetArray(X, 3).ToString) - CDbl(SheetArray(X, 1).ToString) - _
                                              CDbl(SheetArray(X, 7).ToString)
        For Y As Integer = 0 To 3
            SheetArray(X, Y * 2 + 1) = Math.Round(CDbl(SheetArray(X, Y * 2 + 1).ToString), 3)
        Next
        If Math.Abs(CDbl(SheetArray(X, 7).ToString)) > 0.1 Then _
            .Range(.Cells(X + 1, 1), .Cells(X + 1, 8)).Font.Color = -16776961
Next

If IsNothing(SheetArray(X, 0)) Then Exit For 最初の行でエラーが発生します。インデックスが配列の範囲外であることを示しています。理由はありますか?オブジェクトにはデータが含まれていSheetArrayますが、データにアクセスする方法がわかりません。

4

1 に答える 1

0

では、For0 から までループする必要がありCount - 1ます。

For X As Integer = 0 To SheetArray.GetUpperBound(0) - 1
    '...
Next

それはあなたの問題を解決します。

于 2013-01-23T08:36:53.870 に答える