2013-01-22 88 views
0

在VBA工作,我很容易拉在片\範圍成陣列,操縱,然後傳遞迴片\範圍。雖然我在VB.Net中執行此操作時遇到了麻煩。用Excel範圍和陣列

這是我的代碼。

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對象包含數據,但我只是不確定如何到達它。

回答

0

For你必須循環從0到Count - 1

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

這將解決您的問題。