如果variables声明了types,Excel VBA函数会崩溃

我已经写了一个简短的函数来计算一个模数N的幂。我可以超出types的任何整数的范围,所以我写了一个循环,只计算模数值:

Function ModPwr(b As Integer, e As Integer, m As Integer) As Integer Dim r As Integer r = 1 Do While e > 0 r = r * b Mod m e = e - 1 Loop ModPwr = r End Function 

该function折叠或返回零为某些input(例如:217,143,221)。 如果我完全删除“As Integer”和Dim声明,一切工作正常:

 Function ModPwr(b, e, m) r = 1 Do While e > 0 r = r * b Mod m e = e - 1 Loop ModPwr = r End Function 

我必须在Excel中实现RSA演示来演示encryption/解密方法(使用小素数!)。 我是VBA的新手。

在其他(更复杂的)函数中,我需要types声明,所以我必须find问题。

在VBA中,一个整数可以有一个最大值32,767。 我猜你正在超越这个,并且出现错误。

当你不声明variablesAs Integer ,它会自动创build为typesVariant ,它具有更大的最大值。

您的数据types需要能够处理高达m * m 。 Integer数据types的最大值为2 ^ 15-1(或32,767),所以可以处理m达到181。

默认的数据types工作,因为它是一个大范围的double ,但也不是一个确切的数字。 你可能想要的是声明一切为Decimal ,其范围可达10 ^ 28 ,所以可以处理m高达100,000,000,000,000,是一个确切的数字。