The VBA Mod operator appears to use the Integer data type. The
Worksheet MOD() function also has unexpected limitations
http://groups.google.com/groups?thre...wsra nger.com
If you need full precision, use
=y-x*INT(y/x)
instead of
=MOD(y,x)
Jerry
Srdjan Kovacevic wrote:
Post the code please. The overflow may be caused by something else that
the
receiving variable.
Thanks for your reply... The code is below...
However, I've made a slight change, that turned out to be a workaround...
See, I've noticed that the program can't perform Mod operation with two
numbers over 6 digits each, if the mod is called from within the code.
However, if I try to do that operation in the worksheet, it works perfectly
(but substantially slower).
That's why I've made it copy certain values in the worksheet, do the
calculation in the cell and then copy the value from the cell to the
variable (the bit in the loop -- I2 is the cell where I've put the Mod()
operation)..
As I said, if I try to do "x = z mod m" operation in the code (where z is of
the scale of E12 and m is a 6-digit number) it reports overflow...
thx.s
Sub LCG_MLCG()
'
' LCG Makronaredba
' Makronaredbu dana 10.10.2003 snimio Sršan
'
Dim a As Double
Dim c As Double
Dim m As Double
Dim x As Double
Dim y As Double
Dim z As Double
Dim varKolicina As Long
Range("B1").Select
a = ActiveCell.Value
Range("B2").Select
c = ActiveCell.Value
Range("B3").Select
m = ActiveCell.Value
Range("B4").Select
varKolicina = ActiveCell.Value
Range("B5").Select
y = ActiveCell.Value
For i = 1 To varKolicina
z = a * y
Range("I1").Select
ActiveCell.FormulaR1C1 = z
Range("I2").Select
x = ActiveCell.Value
Range("A7").Select
ActiveCell.Offset(i, 0).Select
ActiveCell.FormulaR1C1 = x
y = x
Next i
End Sub