<VBA doesn't support inheritance, and thus lacks two of the key advantages of OO code: Code reuse
Code reuse is not dependent on inheritance, as your conclusion suggests. Code reuse is defined as using the same code in multiple contexts. While inheritance is certainly an example of code reuse, I can just as certainly reuse code that isn't inherited from another class. For example, if I have a bit of code in a class that debits one account and credits another, applying certain business rules as I do so, I may well find that many different objects instantiate that class and use the functionality that it exposes. The fact that it is or isn't derived from a more generalized class is irrelevant; it's still being reused.
<I fix the bug in Dinosaur, which automatically fixes TRex and Pterodactyl
While this is true in theory, it is far from that simple in practice. I read about half of this paper
on the well known "fragile base class problem" and it describes the problem very well.
I have argued the point many times about what constitutes an OO language. To say that languages that have inheritance are OO and those that don't aren't seems to me to miss the point: the fundamental artifact of an OO language is the Object! The value of an OO language is code reuse, and the chief means of achieving that reuse is the encapsulation of functionality, exposed through a known interface--in other words, the object. The rest is enhancements. Now, one could say that Java, or any of the .Net languages, are "more" OO than VB or VBA (and C++ either "more" or "less", depending on the capacities of the practitioner), assuming that OO has numerous artifacts (encapsulation, inheritance, polymorphic characteristics, and so on) that cumulatively "rank" a devolopment solution's "OO-ness". However, one can also argue that "Object-Oriented" means simply that you have reusable objects, and the rest are more-or-less useful enhancements. Given that definition, VB is as OO as any other OO language.
I'll leave the "true" answer to the academics. Personally, I find inheritance to be something to use sparingly, unless I have rigid control of the process of specialization, such as when building a framework. For example, the .Net framework makes extensive use of inheritance, and it was developed by a team, where any mods to the base classes were well known to the developers of the subclasses, and in fact were probably often the same person. (One should NOT create a base class, expose it to unknown specialization, and then feel confident that one may modify the base class as desired without breaking any subclasses "out there".)
If I don't have that control, I prefer to use interfaces.
Bob