A For...Each
loop in VBx uses the IEnumVARIANT
member of an object which supports automation with a method of DISPID_NEWENUM = -4
to iterate over its contents.
However the VBx SAFEARRAY
is not an automation object deriving from IDispatch
(it is not a COM object at all) and does not have an IEnumVARIANT
returning method. How then does For...Each
work on an array under the hood? Is there a standard method to create an IEnumVARIANT
from a SAFEARRAY
? Or is this interpreter special-casing?