結論を先に書くと、32ビットと64ビットでデータ型が仕様変更になったためのようです。
エクセルのマクロが動かないと相談を受けまして。
エクセルファイルのマクロなのですが、他のPCでは動くのに、ある一台だけ動かないと・・・。
マクロの中を見ようとしたら、パスワードが掛けられていて開けない。(誰か外の人に依頼して作ってもらったマクロらしい。)
「型が一致しません」というのは、宣言した変数の型が一致しませんって事かな? と予想。要するに、数字を指定しているのに文字列が入力されている、みたいな?
正常に動くPCと動かないPCでバージョン比較。OSバージョンは同じ、エクセルのバージョンも同じ。
※エクセルのバージョン確認は、
「ファイル」→「アカウント」→「EXCELのバージョン情報」
というわけでお手上げ状態に一瞬なりましたが・・・
ふと、よく見ると、エクセルのバージョンが、片方は32ビット、片方は64ビットでしたorz
検索してみると、変数の型が32ビットと64ビットで異なっているのですね。
32bitは
Long (Long 整数) 4 バイト
-2,147, 483,648 〜 2,147, 483,647
これが64bitでは
LongLong (LongLong 整数) 8 バイト
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
に拡張されたようで。
「LongPtr」というデータ型を使えば、32 ビット環境では Long に、64 ビット環境では LongLong に自動的に変換してくれるっぽ?
このマクロを作った人がこれを使ってくれなかったって事ですかね。
解決方法は……マクロのデータ型を書き換えるのはロックが掛かっていて不可能なので、32bitエクセルを一旦アンインストールして64bitを再インストールしました。
コメント