Sub Fibonacci()
Dim X As Long, Z As Long, N As Long, Carry As Long, PositionSum As Long
Dim N_minus_0 As String, N_minus_1 As String, N_minus_2 As String, FN As Variant
N = Format(Application.InputBox("Please enter which Fibonacci Number you want to calculate...", Type:=1), "0")
ReDim FN(1 To N, 1 To 2)
If N = 1 Then
FN(1, 1) = "'1"
FN(1, 2) = "'1"
ElseIf N = 2 Then
FN(1, 1) = "'1"
FN(1, 2) = "'1"
FN(2, 1) = "'2"
FN(2, 2) = "'1"
ElseIf N > 2 Then
N_minus_1 = "1"
N_minus_2 = "1"
FN(1, 1) = "'1"
FN(1, 2) = "'1"
FN(2, 1) = "'2"
FN(2, 2) = "'1"
For X = 3 To N
Carry = 0
N_minus_0 = Space$(Len(N_minus_1))
If Len(N_minus_1) > Len(N_minus_2) Then N_minus_2 = "0" & N_minus_2
For Z = Len(N_minus_1) To 1 Step -1
PositionSum = Val(Mid$(N_minus_1, Z, 1)) + Val(Mid$(N_minus_2, Z, 1)) + Carry
Mid$(N_minus_0, Z, 1) = Right$(CStr(PositionSum), 1)
Carry = IIf(PositionSum < 10, 0, 1)
Next
If Carry Then N_minus_0 = "1" & N_minus_0
FN(X, 1) = X
FN(X, 2) = "'" & N_minus_0
N_minus_2 = N_minus_1
N_minus_1 = N_minus_0
Next
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "Fibonacci(" & N & ")"
Range("A1:B" & UBound(FN)) = FN
Columns("A:B").AutoFit
Else
MsgBox "The number you enter must be greater than zero!"
End If
End Sub