2017-02-23 1 views
1

Ich habe den Fehler 424 'Objekt erforderlich' auf der Zeile tableauScores(i - 1, j).Value = wsScores.Cells(2 + i * 3, j + 1).Value in der folgenden Untergruppe.Erforderliches Objekt für eine Variante

Es gibt nur dieses Sub, sonst nichts. Ich bin in der Base 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 

ich nicht, warum ich Variante immer so verwenden.

+0

Sie nutzen könnten 'ReDim tableauScores (1 bis 2, 1 bis 3)' Ihre Berechnung einfacher –

+0

[Variant-Datentyp] (https machen: // msdn. microsoft.com/en-us/library/office/gg251448.aspx) hat Eigenschaft 'Value' allein nicht. Um 'Variant' einen Wert zuzuordnen, weisen Sie es einfach der Variablen selbst zu. – dee

+0

@dee Der Hauptpunkt ist nicht, dass 'Variant' keine' Value' Eigenschaft hat. Der folgende Code funktioniert: "Dim v As Variant: Legen Sie v = ActiveWorksheet.Cells (1,1) fest: Debug.Print v.Value"; Auch wenn die Variable 'v' vom Typ' Variant' ist, hat das Objekt, auf das sie sich bezieht, die Eigenschaft 'Value', und VBA löst die Eigenschaft zur Laufzeit auf. –

Antwort

5

tableuScores als Array von VariantVariant() — und bis ein gegebenes Arrayelement initialisiert definiert ist, wird es einen Wert von Empty hat. Es ist unmöglich, die Value Eigenschaft von Empty zu lesen.

ohne Value tun dies vor:

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

Ja, ändern Sie einfach Ihre Antwort, es ist 'leer 'vor der Initialisierung –

+0

@ShaRado Danke; Fest. –

+0

Scharfes Auge Zev ... Ich habe genau darüber geschwärzt. –

Verwandte Themen