Runtime Error 447: “Object doesn't support current locale setting,” explained and fixed

Error 447, “Object doesn't support current locale setting”, fires when an object is asked to operate under a locale (the system's regional settings for dates, numbers, and text) that it cannot handle. The classic scenes are date values passed as text in one format and parsed in another, and components built for a single locale meeting a system set to a different one. It appears on machines whose regional settings differ from the developer's, which is why it so often reads as “works on my machine, fails on theirs.”

For people who just run the program

  1. Compare regional settings with a machine that works. Control Panel's Region settings (date format, decimal separator) are the variable. If the failing PC uses day/month order or a comma decimal separator where the working one does not, you have likely found it.
  2. Note if it clusters on dates or amounts. Failures at the start of a month (when day and month swap plausibility) or on values with decimals point at locale parsing.
  3. Do not change your regional settings casually if other software depends on them. Record the difference and hand it to the maintainer; the correct fix is locale-proof code, not a fleet-wide settings change.
  4. Report your Region settings exactly. “German (Germany)” plus the short date format is a complete and useful report.

For people who write the code

  1. Never pass dates or numbers as formatted text across object boundaries. Pass real Date and numeric values; where text is unavoidable, use an unambiguous format (ISO yyyy-mm-dd) and parse with explicit code, not the ambient locale.
  2. Dim d As Date
    d = DateSerial(2026, 3, 9)          ' unambiguous in every locale
    ' d = CDate("03/09/2026")          ' March 9 or 3 September? Locale decides.
  3. Format for display only at the last moment. Values kept typed (Date, Double, Currency) survive any locale; values converted to strings early get reinterpreted at every boundary, which is where 447 and its silent wrong-value cousins breed.
  4. Test under a second locale. Switching your own machine's region for one test run surfaces locale assumptions that a year of same-locale testing never will.
Error 447's silent sibling is worse: the wrong date that parses fine. 03/04 read as March 4 in one locale and 3 April in another raises no error at all. Any locale investigation should also audit past results for swapped day/month values, not just fix the crash.

If it still happens

If code is locale-clean and 447 persists, the component itself may declare limited locale support: some older controls genuinely cannot run under certain settings. The vendor's documentation states supported locales; the remedies are running the process under a supported locale or replacing the component.

Common questions

What is a locale setting? The operating system's regional configuration: date order, decimal and thousands separators, currency, and text conventions. Programs use it to interpret and display values, and mismatches between writer and reader cause this family of errors.

Why do developers miss error 447? Because code is tested on machines sharing the developer's locale. The bug is an assumption, invisible until the code meets a different region's settings.

Related errors

Runtime Error 446 · Runtime Error 448 · Runtime Error 13