2017-02-23 6 views
1

次のサブラインのtableauScores(i - 1, j).Value = wsScores.Cells(2 + i * 3, j + 1).Value行に「オブジェクトが必要です」というエラー424があります。バリアントに必要なオブジェクト

この部分だけがあり、それ以外はありません。私はいつもこのようにバリアントを使用する理由、ベース0

Dim wsScores As Worksheet 
    Dim i As Integer, j As Integer 
    Dim tableauScores As Variant 

    Set wsScores = ThisWorkbook.Worksheets("Scores")   
    j = 0 

    ReDim tableauScores(1, 2) 

    If wsScores.Cells(2, 1).Value = "Thomas" Then   
     For i = 1 To 2 
      For j = 1 To 3 
       tableauScores(i - 1, j).Value = wsScores.Cells(2 + i * 3, j + 1).Value 
      Next j 
     Next i    
    End If 

End Sub 

に、私は得ることはありませんよ。

+0

あなたは 'ReDimステートメントtableauScores(2〜3に1、1)'あなたの計算を容易にするために、 –

+0

[Variantデータ型](httpsを使用することができます:// MSDNを

Valueせずにこれをやって考えてみましょう。 microsoft.com/en-us/library/office/gg251448.aspx)プロパティに「Value」プロパティはありません。 Variantに値を代入するには、それを変数自体に代入するだけです。 – dee

+0

@dee主なポイントは、 'Variant'には' Value'プロパティがありません。次のコードは動作します: 'Dim v As Variant:Set v = ActiveWorksheet.Cells(1,1):Debug.Print v.Value';変数 'v'の型が' Variant'であっても、それが参照するオブジェクトは 'Value'プロパティを持ち、VBAは実行時にプロパティを解決します。 –

答えて

5

tableuScoresVariantVariant() —のアレイとして定義され、指定された配列要素が初期化されるまで、それはEmptyの値を有することになります。 ValueプロパティをEmptyと読み込むことは不可能です。

tableauScores(i - 1, j) = wsScores.Cells(2 + i * 3, j + 1).Value 
+0

はい、ちょうどあなたの答えを変更してください、それは初期化される前に 'Empty 'です –

+0

@ShaiRadoありがとう;一定。 –

+0

シャープな目Zev ...私はそれを真っ直ぐにぼかしました。 –

関連する問題