質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

2回答

5386閲覧

Microsoft AccessのVBAで「エラー13:型が一致しません」

Delicatessen38

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/06/09 20:13

編集2020/06/16 03:39

Access VBA で構築したシステムの改修中、一昨日(6/8)午後あたりから、急に既存コードでエラーが起こるようになってしまいました。
VBAでテーブルのデータの読み込み時に、

・数値型、フィールドサイズ:十進型

の項目の読み込みで、「エラー13:型が一致しません」が発生して、その後 Access がハンブアップします。
「十進型」を別の型に変更すると読み込めます。
ただし、対応中のシステムでは、数値型の項目には全て「十進型」が指定されているため、にわかにテーブルを変更する訳にもいきません。

直近の Windows Update を疑っているのですが、情報をお持ちの方はいらっしゃいませんでしょうか?

Access は、

Microsoft Access 2019 MSO(16.0.12827.20236) 64ビット。

 バージョン 2005(ビルド 12827.20268)以降では起こります。
バージョン 2004(ビルド 12730.20270)では大丈夫でした。
テーブル設定
データ
状況(例)
十進型以外は起こらない


[2020/06/10] 追記
Access 2013の32ビット版をインストールして、動作が確認できました。
しばらくはこの状態で自分の仕事は進めて、マイクロソフトのアナウンスを待とうと思います。

ちなみに、VarType の戻り値は、14(vbDecimal)でした。
32ビット版にしてしまってからの確認なので、意味はないですが。

皆さま、ご協力ありがとうございました。

マイクロソフトから公式アナウンスが出ています。
リンク内容

マイクロソフトの修正プログラムがいつ出るのか・・・、辛抱強く待ちます。
回答頂いた皆さま、ありがとうございました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sousuke

2020/06/09 21:26

十進型を変数に受ける場合、本来はvariant型で受けないといけないのはわかっていて、あえてlong型で受けているのですか?
sazi

2020/06/10 01:20 編集

そもそも、精度18桁はlongではオーバーフローしますけど? →失礼64bitですね。
Delicatessen38

2020/06/10 03:03

失礼しています。 添付画像は、調査用なので簡略化しています。 CLng を使っても、Variant 型で受けても、値が取得できない状況です。 バージョン 2004(ビルド 12730.20270)の状態だったPCでも、確認時には動作したのに Windows Update がかかったら動作しなくなりました。
sousuke

2020/06/10 03:28 編集

variantで受けられなかったらほぼバグですね。updateを待かofficeのロールバックしかないかと。 純粋な興味なんですがVarType(rsTest01![CD])したらなにが返るんですかね?
sazi

2020/06/10 03:34

テーブルデザインで変更したりしてますか?
Delicatessen38

2020/06/10 05:35

Access 2013の32ビット版をインストールして、動作が確認できました。 しばらくはこの状態で自分の仕事は進めて、マイクロソフトのアナウンスを待とうと思います。 ちなみに、VarType の戻り値は、14(vbDecimal)でした。 32ビット版にしてからの確認なので、意味はないですが。 ご協力ありがとうございました。
guest

回答2

0

システムの改修中との事なので、テーブルのデザインを変更されたりしているのではないかと思います。

Accessのテーブルデザインで変更した場合、定義データが破損し実行時にエラーとなるケースがあります。

この場合修復や新規ファイルに移すようなことを行っても改善しません。

以下を試してみて下さい。
・テーブルをエクスポート(XML)→インポート(XML)

投稿2020/06/10 04:37

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Delicatessen38

2020/06/10 05:28

ご回答ありがとうございます。
Delicatessen38

2020/06/10 05:40

最初に発生した個所は、今回は手を入れていない箇所です。
guest

0

Accessの十進数型は、正確な十進数を表現するために、色々な問題があるようです。
今回はLong型の変数に十進数型を取り込もうとして、暗黙の変換が使えずにエラーとなったものと推測しますが、その場合にはCLngのような型変換関数を使うのが良いと思います。
※十進数型の値をDecimal型変数で受けた場合でも、これをLong型変数に代入する場合はCLngでキャストした方が良いと思います。

投稿2020/06/10 01:00

kenshirou

総合スコア772

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Delicatessen38

2020/06/10 03:04

失礼しています。 添付画像は、調査用なもので簡略化しています。 CLng を使っても、Variant 型で受けても、値が取得できない状況です。 バージョン 2004(ビルド 12730.20270)の状態だったPCでも、確認時には動作したのに Windows Update がかかったら動作しなくなりました。
kenshirou

2020/06/10 04:35

そうでしたか。失礼しました。 対象の列にはどのような数値が入っているのでしょうか? (CODEという名前からして、整数値でしょうか?)
Delicatessen38

2020/06/10 05:01

整数値です。添付画像の確認用DBでは、1,2,3の様な数字が入っているだけです。 Yahoo! 知恵袋でも質問していたのですが、全く同じ現象が出た、という回答が先ほどつきました。 恐らく Windows Update が原因だろうとは思うのですが、直近のものをアンインストールしても改善されず、途方に暮れています。 今は、2013の32ビット版を試してみようとしている所です。
Delicatessen38

2020/06/10 05:27

2013の32ビット版で、動作が確認できました。 しばらくはこの状態で自分の作業を進めて、マイクロソフトのアナウンスを待とうと思います。 ご協力ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問