何らかの理由で、次のステートメントはゼロに評価されます。オーバーフローが原因だと思いますが、すべての中間値は double の範囲内にあるようです。
DiffieHellmanKey = (43 ^ 47) - (53 * Fix((43 ^ 47) / 53))
異なる数値(以下)で実行すると、正しい値が29になるため、オーバーフローだと思います。
DiffieHellmanKey = (5 ^ 22) - (53 * Fix((5 ^ 22) / 53))
何を与える?ここで、オーバーフローを引き起こしている元の数値に戻ります。関連する変数はすべて Double です。VBAではなくワークシート式として計算しても機能しません:
=(43 ^ 47) - (53 * ROUNDDOWN(((43 ^ 47) / 53), 0))
上記の例を同等の形式 (下記) を使用して VBA に実装すると、-1.75357E+62 という誤った結果が得られます。
DiffieHellmanKey = (43 ^ 47) - (53 * WorksheetFunction.RoundDown(((43 ^ 47) / 53), 0))