Runtime Error 423: “Property or method not found,” explained and fixed

Error 423, “Property or method not found”, means a member access named something the object does not expose. It is met most often in Automation, where VBA drives another application's object model (a document object, a database object, a control) and the member name, spelling, or availability differs from what the code assumes, sometimes because the object is a different class than expected, sometimes because the member exists only in another version. The name was not found on that object, at that moment; everything else about the call may be perfect.

For people who just run the program

  1. Expect it after version changes. A macro written against one version of a program fails with 423 when the other program is upgraded and its object model shuffles members.
  2. Note the feature, not just the error. The failing feature maps to the specific member; “when I run the mail merge step” locates it far better than the number alone.
  3. Check for mismatched pairs. If the tool and the program it drives were updated separately, aligning their versions is a common resolution; ask before reinstalling either at random.
  4. Report both version numbers. The host's and the driven program's versions together explain most 423s.

For people who write the code

  1. Ask the object what it is before asking what it has. Print TypeName(obj) at the failure. A variable expected to hold one class frequently holds a related but different one whose member set differs by exactly the missing name.
  2. Browse the real object model. The Object Browser (F2) against the actual referenced library shows the members that exist in the installed version. If the member is absent there, no call syntax will conjure it.
  3. Debug.Print TypeName(doc)   ' confirm the class first
    ' Then check the member in the Object Browser for THAT class,
    ' not the class the code was written against last year.
  4. Guard version-dependent members. Where a member exists only in newer versions, feature-detect with a small trapped probe and degrade gracefully, rather than letting 423 kill the whole run on older installs.
Errors 423 and 438 are close relatives with different addresses. 438 (“Object doesn't support this property or method”) is the general member-not-supported error inside VBA's own objects; 423 is the form typically returned through Automation and form/control member lookups. Treat them the same diagnostically: verify the object's class, then verify the member in that class's documentation.

If it still happens

If the class is right and the member is documented, the reference may be resolving to an older type library than the installed program provides: check Tools, References for the version actually bound, and for MISSING or duplicate libraries of the same name in different versions.

Common questions

Is error 423 a typo in my code? Often effectively yes: a misspelled member name and a genuinely absent member are indistinguishable to the runtime. But version changes and wrong-class objects produce the identical error with perfectly spelled names.

Why does the same macro work on another machine? Because Automation resolves members against the installed program's object model. Different installed versions present different members, so identical code can succeed on one machine and raise 423 on another.

Related errors

Runtime Error 438 · Runtime Error 424 · Runtime Error 451