I think the main issue is that your code will run way slower.
Of course, if you have a short macro and way slower means 0.05s instead of 0.005s, nobody will ever notice.
Here's something I found with a quick Google search:
Often interfaces have properties that are actually pointers to other interfaces. Visual Basic allows you to access these properties in a shorthand fashion by chaining interfaces together. For instance, assume that you have a pointer to the IFoo interface, and that interface has a property called Gak that is an IGak interface with the method DoSomething(). You have a choice on how to access the DoSomething method. The first method is the long-handed way.
Dim pGak as IGak Set pGak = pFoo 'Assign IGak interface to local variable pGak.DoSomething 'Call method on IGak interface
Alternatively, you can chain the interfaces and accomplish the same thing on one line of code.
pFoo.Gak.DoSomething 'Call method on IGak interface
When looking at the sample code, you will see both methods. Normally the former method is used on the simpler samples, as it explicitly tells you what interfaces are being worked with. More complex samples use the shorthand method.
This technique of chaining interfaces together can always be used to get the value of a property, but it cannot always be used to set the value of a property. Interface chaining can only be used to set a property, if all the interfaces in the chain are set by reference. For instance, the code below would execute successfully.
Dim pMxDoc As ImxDocument Set pMxDoc = ThisDocument pMxDoc.FocusMap.Layers(0).Name = "Foo"
The above example works because both the Layer of the Map and the Map of the document are returned by reference. The lines of code below would not work since the Extent envelope is set by value on the active view.
pMxDoc.ActiveView.Extent.Width = 32
The reason that this does not work is that the VBVM expands the Inter-face chain in order to get the end property. Because an interface in the chain is dealt with by value, the VBVM has its own copy of the variable, not the one chained. To set the Width property of the extent envelope in the above example, the VBVM must write code similar to this:
Dim pActiveView as IActiveView Set pActiveView = pMxDoc.ActiveView Dim pEnv as IEnvelope Set pEnv = pActiveView.Extent ' This is a get by value, pEnv.Width = 32 ' The VBVM has set its copy of the Extent and not ' the copy inside the ActiveView
For this to work the VBVM requires the extra line below.
pActiveView.Extent = pEnv ' This is a set by value,