Using Integer you get overflow. Use Doubles.
Function NewChi(a As Double, b As Double, c As Double, d As Double) As Double
    Dim N       As Double
    Dim ea      As Double
    Dim eb      As Double
    Dim ec      As Double
    Dim ed      As Double

    N = a + b + c + d
    ea = ((a + c) * (a + b)) / N
    eb = ((b + d) * (a + b)) / N
    ec = ((a + c) * (c + d)) / N
    ed = ((b + d) * (c + d)) / N
    NewChi = (((a - ea) ^ 2) / ea) + _
             (((b - eb) ^ 2) / eb) + _
             (((c - ec) ^ 2) / ec) + _
             (((d - ed) ^ 2) / ed)
End Function
Also, in this declaration,
Dim N, ea, eb, ec, ed, chival As Integer
... everything but chival is declared as a Variant.

You can do this,
Dim N As Variant, s As String, d As Double, ...