次の方法で共有


Excel VBA: Format 関数が実行時エラーになる

質問

2019年2月13日水曜日 4:25

お世話になります。

Excel 2016 の VBA で Format 関数を使っています。
昨日まで動作していましたが、今日、「今すぐ更新」を実行し、新しいもの(ビルド?)になりました。
すると、Format 関数で実行時エラーが発生するようになりました。
【現在の状態】
    
【VBA コード】最もシンプルと思われるコードでテストしました。

Private Sub cmd_Test_Click()
    Range("B2").Value = Date
    Range("B3").Value = Format(Date, "yyyy-mm-dd")
End Sub

エラーは Format(Date, "yyyy-mm-dd") の行で発生しています。
  

同様の現象が発生した方、対応なさった方がおられたら、お知恵をお貸しください。
以上、よろしくお願いいたします。

【追記 1】
  書くのを忘れていたので、追記いたします。
  Windows 10 Pro(バージョン 1809、ビルド 17763.253、 64-bit)です。
  Excel 2016 を更新する前に、Windows Update(2019年2月、Patch Tuesday)を行っていました。

  なお、Windows Update および Excel 2016 の更新を行う前に取得していたイメージを戻したところ、
  前述の実行時エラーは出なくなりました。★ 1 ★

  なので、考えられる原因は Windows Update または Excel 2016 の更新だと思われます。

**【追記 2】
**  Excel に原因があるだろうと思ったので、★ 1 ★ の状態で、Windows Update を行いました。
  すると、実行時エラーが出るようになりました。
  なので、2月13日の Windows Update に原因があったものと思われます。

【追記 3】
  WinBuzzer に記事が出ていました。
  Microsoft Details Known Windows Issues Following Patch Tuesday

  ひとことで言うと、2月の更新プログラムを適用すると、
  日付をパースする時に元号名がトラブルの元になることがある、のようです。
  Windows 10/Windows 7

  Finally, Microsoft also describes an issue that is specific to Windows 7 and
  Windows 10, except the original (version 1507) build:

Known Issue: After installing this update, the first character of the Japanese era name is not recognized as an abbreviation and may cause date parsing issues.

Workaround: Modify the registry with the two-character abbreviation for Japanese eras as follows:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras]

  • “1868 01 01″=”明治_明_Meiji_M”
  • “1912 07 30″=”大正_大_Taisho_T”
  • “1926 12 25″=”昭和_昭_Showa_S”
  • “1989 01 08″=”平成_平_Heisei_H”

すべての返信 (2)

2019年2月14日木曜日 0:21

手元の環境
 Excle 2016 / 32bit / Ver 1901, ビルド 11231.20130 クイック実行
では再現しませんでした。

「今すぐ更新」でバージョンを上げたところ
 Excle 2016 / 32bit / Ver 1901, ビルド 11231.20174 クイック実行
に更新されました。しかし、Format 関数が失敗する事象は確認できず、引き続き問題無く使用できています。

参照設定が破損して「参照不可」になっていないかどうかも確認してみてください。

また、直近で導入した Windows Update が何をインストールしていたかも情報共有頂けると助かります。

なお当環境は Windows 10 Pro 1803 (ビルド 17134.590) , x64 です。
直近の更新履歴は、一昨日に KB4487017KB4487038 が導入されていた程度です。

手元の Win10 には 1809 が降ってきていないので試せませんが、
対応するのは KB4487044KB4487038 でしょうか。

上記パッチだと、和暦対応も含まれていそうですが、当方のエントリはこんな感じ。
あれ…。いつのまにか "昭和_昭_Show_S" が "昭和_㍼_Show_S" になってる…?

# "2019 05 01" (一文字元号「㋿」U;32FF)は流石に見当たらず。

【追記】

本件とは無関係ですが、いつの間にか Excel で
CDate("平成元年1月8日") 
CDate("平元年1月8日") 
CDate("㍻元年1月8日") 
表記が許容されてるっぽい…? 

(元号対応は、手元のビルド 11231.20174 では OK 、ビルド 11231.20130 では NG でしたが、調査対象 PC が物理 2 台だけだったので、因果関係は未確認です。)


2019年2月14日木曜日 3:36

魔界の仮面弁士 さん、

お忙しい折、お調べいただき、ありがとうございました。

再現する環境は次のとおりです。
 Windows 10 Pro / バージョン 1809(昨年 10月に配信された時、アップグレードしたもの) / ビルド 17763.316 / 64-bit
 Excel Pro. Plus 2016 / バージョン 1901 / ビルド 11231.20174 / 32-bit

(1) Excel 参照設定に破損はありません。
  最初の質問に書いているのが、新規作成したブック内の VBA コードです。
(2) Windows Update で入ってきたもの(関係しそうなものをピックアップしました)
  KB4487038
  ;KB4483452
  KB4462174
  KB4018313
  下図2つは拙作ソフト(別もの)による Windows Update の履歴一覧です・・・

【誤】<S>なお、この現象は3台の物理マシンで再現しています(Windows, Excel のバージョン、ビルド、アーキテクチャは同じ)。
正常時(2月 Windows Update、Excel アップデート実施前)のイメージを使ってリストアして、その後で Windows Update、Excel アップデートを行ったところ、3台とも再現しました。</S>
**【正】**3台の物理マシン(Windows, Excel のバージョン、ビルド、アーキテクチャは同じ)のうち、1台のみで再現します。他の2台では再現しません。

仕事に影響するので、リストアしたら、当面は Windows Update を控えようと考えています。
また、そのうち Microsoft による対応が行われると思っていますので、気にしないことにしました。

ありがとうございました。

【2019-02-16 追記】
  Excel 実行時エラーの原因が分かりました。
  2019年2月の更新プログラム KB4487044 によるものでした。
  これをアンインストールして解消しました。
  ただし、その影響があるのは1台のみで、他のPCは KB4487044 が入っていても不具合なしです。

  魔界の仮面弁士さんがお書きになっているように
  不具合なしのPC(レジストリー)では、元号の省略形が「昭」ではなく「㍼」、「平」ではなく「㍻」などとなっていました。
  不具合ありのPCでは、「明」「大」「昭」「平」でした。

  この間の詳細を**ブログ**に書いています。ご興味のある方はご笑覧ください。

Ashidacchi -- https://ssl01.rocketnet.jp/hokusosha.com/default.html