Excel VBAで、関数は参照渡し(ByRef)にデフォルトでなっているが、その引数を型キャストして呼び出すと変更されない、ということに気付かなくてバグって半日潰した!
かなり昔に作ったExcel VBAの数値計算プログラムの中の関数を別のプログラムで使いたい、と言われその部分だけ抜き出そうとした。
ああ、1時間もあればできるよ、と言ったのに半日以上かかった。どこでハマっていたかというと、、、
昔のプログラムは整数にIntegerを使っていたが、別のプログラムはLongでそのまま使うと
例の「コンパイルエラー:ByRef引数の型が一致しません」がでる。
あ、もちろん最初に
Option Explicit
をつけてますよ、、、というか、数値計算のプログラムなんで意図しない変換を避けるために
これは必須。(fortranで言うところのimplicit none)
で通常動作はこれ。
デフォルトでVBAは参照渡し(ByRef)になっているので、関数内で変数を変換すると呼び出した側も変わる。
これを防ぐには値渡し(ByVal)にすればいいが、今回はByRefで変数が変換されるような仕様にしていた。
で、呼び出し側の変数をLongにしてCIntで型変換したら、、、
あれ?参照渡しなのに変換されてない、、、
というところでハマりました。言われてみれば型が違うのに参照渡しするのは変、、、ならエラーを出してほしかったり。
皆さんもしょーもないところでハマることがあるので
気を付けて。
« かつやで鶏ガパオダブルチキンカツ丼+とん汁(小)をいただく。非常に味が濃い! | トップページ | ax²+bx+c=0の複素解(a,b,c=-25~25)を描くと結構面白い。Pythonで描いてみた。 »
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年6月25日 Ericssonモビリティレポート6月号は5G FWAのマネタイズについて、QorvoがオートロックへのUWB応用について解説、NATOのダイアナチャレンジは「先進通信技術」と「電磁環境の競合」、TDKがQEIよりRF電源事業譲受(2025.06.25)
- 高周波・RFニュース 2025年6月20日 GSMA MWC25上海開催、3GPPのCCWでのプレゼン資料、Kyocera AVXのNB-NTN向けIoTデバイスのホワイトペーパー、TDKがAI・スマートグラスのSoftEye買収、Mini-CircuitsのAEC-Q200 qualifiled LTCC製品、Fibocomのスマートリビング向けFG390(2025.06.20)
- 高周波・RFニュース 2025年6月19日 QorvoがSバンドレーダ用のBAW switched filter bank発表、Ericssonがミッションクリティカル用途のアンテナ発表、SEMCOが125℃保証の0201インチX7T 1.0㎌ 6.3V MLCC発表、iFixitがトルクスプラスねじについて解説(2025.06.19)
- 高周波・RFニュース 2025年6月18日 Qorvoが5Gインフラ向けBAWフィルタとプリドライバアンプ発表、KeysightとNTTらが300GHz帯で280Gbpsを達成する信号発生システム発表、TDKが自動車用パワー・オーバー・コアクス・インダクター発表、NordicがNeuton AI買収(2025.06.18)
- 高周波・RFニュース2025年6月17日 everythingRF magazineはIMS2025特別号、MITの6Gに向け光でディープラーニングを行うチップ論文、NGMNが6Gに向けたキーメッセージを出版、Litepoint、Spirent、ViaviのTest and Measurementのトレンドレポート(2025.06.17)
« かつやで鶏ガパオダブルチキンカツ丼+とん汁(小)をいただく。非常に味が濃い! | トップページ | ax²+bx+c=0の複素解(a,b,c=-25~25)を描くと結構面白い。Pythonで描いてみた。 »
コメント