I often have a minor frustration about With statements.

E.g., I have this (pseudo)code:

With MyObject
blah blah blah
MyUDF .MyProperty
With .MyProperty
blah blah blah
End With
blah blah blah
End With

The call to MyUDF really belongs INSIDE the inner With block, since it is operating at the same property as the statements in that With block, but I don't know how to refer to the property inside the block (except by writing out in full MyObject.MyProperty, or in some cases .Parent.MyProperty, which would make the code segment less general). If the UDF call had to be in the middle of a long With block, I'd even have to break the With block in two.

A similar situation:

[something].Cells(1, 7).Value = 42
With [something].Cells
blah blah blah
End With

Here, for the sake of argument, "[something]." could be e.g. "ThisWorkbook.Worksheets("MyWorkSheet").", or something more complex than that.
Again, I might prefer to move the first statement INSIDE the With block, and that would in fact be possible writing ".Item(1, 7).Value = 42". Another solution would, of course, be to write "With [something]" instead of "With [something].Cells", and prepend every reference to the root inside the block with ".Cells".

What I miss is a more general, neat, compact and readable way to achive this sort of thing - or maybe just a better overview of the methods that can be used in various cases, like .Parent and .Item. (Perhaps a clearer idea inside my head of concepts like properties, methods and collections might help too.)