Runtime Error 445: “Object doesn't support this action,” explained and fixed

Error 445, “Object doesn't support this action”, means the object exists and the member exists in the language, but this particular object's class does not support that operation. It is the action-level sibling of error 438: 438 says the property or method is not there; 445 says the verb does not apply to this kind of object. The common scene is generic code that walks a collection of mixed objects (all controls on a form, all shapes on a sheet) and applies an action that only some of them support.

For people who just run the program

  1. Expect it in tools that process “everything.” Formatters, auditors, and exporters that touch every control or shape meet objects that cannot do what the tool assumes all objects can.
  2. Note which item it stopped on. The name or type of the control, shape, or record being processed when it failed is the single most useful fact.
  3. Remove or skip that item if the tool allows. If the batch then completes, the item's type is the story, and worth reporting as such.
  4. Report the item type. “It stops on the picture frame” tells the maintainer which class lacks the action.

For people who write the code

  1. Type-check before acting in generic loops. TypeOf ... Is and TypeName let a loop apply actions only to classes that support them:
  2. For Each ctl In Me.Controls
        If TypeOf ctl Is TextBox Then ctl.SetFocus   ' action guarded by type
    Next ctl
    ' Unguarded, the first non-TextBox raises error 445.
  3. Trap 445 as a skip signal in batch processors. Where a loop legitimately tries an optional action on many objects, catching 445 per item and continuing is a reasonable design, provided skips are logged rather than silent.
  4. Check state-dependent support. Some actions are supported only in certain object states (an action on a record that requires it to be in edit mode, for example). “Doesn't support” can mean “not in this state,” so verify state as well as type.
Error 445 is not a cue to add the action. The class's designer excluded it deliberately, often because it makes no sense for that kind of object. Code that needs the action for every item should filter to the kinds that support it, not attempt to work around the class.

If it still happens

If the object is of the right class and state, look for a version difference: actions are added to object models over time, and code written against a newer library raises 445 against an older installed one. The Object Browser against the installed library is the ground truth.

Common questions

How is error 445 different from error 438? 438: the named property or method is not supported by the object. 445: the attempted action (an operation the language offers) is not supported by this object's class. In practice both send you to verify the object's class and its documented members.

Why does generic code hit 445 so often? Because collections in Office and forms are heterogeneous: one collection holds many classes. Any loop assuming uniformity eventually applies an action to a class that does not support it.

Related errors

Runtime Error 438 · Runtime Error 446 · Runtime Error 423