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ニュース 2026年6月16日 Microwave JournalにアンリツのTensor VNA解説記事、6G Worldで6GのRF設計の重要さ解説記事、3GPPのシンガポール総会の様子、GSAがプライベートモバイルネットワーク調査など(2026.06.16)
- RF Weekly Digest (Codexで作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/6/7-6/14(2026.06.14)
- 高周波・RFニュース 2026年6月12日 アンリツがAI対応のTensor VNA発表、Qualcommが5G NR NTN解説、iFixitがTrump phoneを分解・やっぱりHTC U24 Proとほぼ同じ、6G Worldの3GPPミーティング解説記事など(2026.06.12)
- 高周波・RFニュース 2026年6月11日 QorvoがXバンドレーダ用フロントエンドモジュール発表、3GPPがRel.21のタイムライン発表、NI(Emerson)が雑音指数測定のウェビナー開催、MIPI A-PHYのSerDesが4社で相互運用性確認、Menlo Microが高信頼性ミリ波スイッチ発表など(2026.06.11)
- Gemma 4 QATがOllama経由で使えるようになっていた。そこで今度はGoogle Antigravity(Gemini 3.5 Flash)にローカルLLMでRF情報一週間分まとめて日本語で要約するアプリ(gemma4-26B-A4B QAT、DuckDuckGo Search、Flask使用)を作ってもらう。画面デザインはこっちがいいな。(2026.06.15)
« かつやで鶏ガパオダブルチキンカツ丼+とん汁(小)をいただく。非常に味が濃い! | トップページ | ax²+bx+c=0の複素解(a,b,c=-25~25)を描くと結構面白い。Pythonで描いてみた。 »





コメント