Ich habe diesen Code:VBA: Ich ändere arr (0), kann nicht verstehen, warum arr (1) geändert wird?
Call MakeRoomForArrayItem(interAll, 0)
interAll(0).StartY = tempStartY
interAll(0).K = tempK
In der ersten Zeile ich einen neuen langgestreckten Interall() durch eine erfolgreich erstellen.
Dann erwarte ich, dass die Zeilen zwei und drei nur interAll (0) betreffen, aber sie führen die gleichen Änderungen an interAll (1) durch. Warum ist das? Habe ich erfolgreich ein neues Objekt für interAll (1) erstellt?
Sub MakeRoomForArrayItem(ItemArray As Variant, ByVal ItemElement As Integer)
Dim i As Integer
ReDim Preserve ItemArray(LBound(ItemArray) To UBound(ItemArray) + 1)
For i = UBound(ItemArray) - 1 To ItemElement Step -1
Set ItemArray(i + 1) = ItemArray(i)
Next
'Erase values in object ItemArray(ItemElement) would be nice
End Sub
Ich habe die gleiche Funktion in anderen Fällen erfolgreich verwendet. Könnte es mit fehlenden Deklarationen in der aufrufenden Funktion zu tun haben?
EDIT: Ich habe das Problem behoben, indem
Set interval = New CInterval
Set interAll(0) = interval
Hinzufügen Können Sie mir erklären, was hier wirklich passiert ist, damit ich nicht wieder den gleichen Fehler machen?
Psst ... vergessen Sie nicht, um Kommentare upvote Sie hilfreich, und akzeptieren Sie die Antwort, die Sie am meisten hilfreich! (Es muss nicht mein sein!) –