I am trying to convert a sub procedure to a function. This sub generate number based on some conditions. It's working as expected but when I try to convert it as a function, it only generate "0". Can anyone please help? It will be great appreciated! Here is my sub named "GenerateNumber"
Public Sub GenerateNumber()
    Dim evenRange As Range
    Dim oddRange As Range
    Dim i As Integer
Set evenRange = Range("A2:Z2,A4:Z4,A6:Z6,A8:Z8,A10:Z10,A12:Z12,A14:Z14,A16:Z16,A18:Z18 ")
    Set oddRange = Range("A1:Z1,A3:Z3,A5:Z5,A7:Z7,A9:Z9,A11:Z11,A13:Z13,A15:Z15,A17:Z17,A19:Z19")
    If Not Intersect(Activecell, evenRange) Is Nothing Then
        If Activecell.Interior.Color = Activecell.Offset(0, -1).Interior.Color Then
            Activecell.Value = Activecell.Offset(0, -1).Value + 1
            For i = 1 To Selection.Cells.Count - 1
            Activecell.Offset(0, i).Value = Activecell.Value + i
            Next i
        Else
            Activecell.Value = 1
            For i = 1 To Selection.Cells.Count - 1
            Activecell.Offset(0, i).Value = Activecell.Value + i
            Next i
        End If
        'MsgBox "Active Cell In Even Range!"
    Else
'      MsgBox "Active Cell In Odd Range!"
      If Activecell.Interior.Color = Activecell.Offset(0, 1).Interior.Color Then
        Activecell.Value = Activecell.Offset(0, 1).Value + 1
        For i = 1 To Selection.Cells.Count - 1
        Activecell.Offset(0, -i).Value = Activecell.Value + i
        Next i
     Else
        Activecell.Value = 1
        For i = 1 To Selection.Cells.Count - 1
        Activecell.Offset(0, -i).Value = Activecell.Value + i
        Next i
      End If
End If
End Sub
And my function code like this,
Public Function GenNumber() As Variant
    Dim evenRange As Range
    Dim oddRange As Range
    Dim rng As Range
    Dim i As Integer
    Set evenRange = Range("A2:Z2,A4:Z4,A6:Z6,A8:Z8,A10:Z10,A12:Z12,A14:Z14,A16:Z16,A18:Z18 ")
    Set oddRange = Range("A1:Z1,A3:Z3,A5:Z5,A7:Z7,A9:Z9,A11:Z11,A13:Z13,A15:Z15,A17:Z17,A19:Z19")
    If Not Intersect(Activecell, evenRange) Is Nothing Then
    If Activecell.Interior.Color = Activecell.Offset(0, -1).Interior.Color Then
        Activecell.Value = Activecell.Offset(0, -1).Value + 1
        For i = 1 To Selection.Cells.Count - 1
        Activecell.Offset(0, i).Value = Activecell.Value + i
        Next i
     Else
      Activecell.Value = 1
        For i = 1 To Selection.Cells.Count - 1
        Activecell.Offset(0, i).Value = Activecell.Value + i
        Next i
      End If
   'MsgBox "Active Cell In Even Range!"
    Else
'      MsgBox "Active Cell In Odd Range!"
      If Activecell.Interior.Color = Activecell.Offset(0, 1).Interior.Color Then
        Activecell.Value = Activecell.Offset(0, 1).Value + 1
        For i = 1 To Selection.Cells.Count - 1
        Activecell.Offset(0, -i).Value = Activecell.Value + i
        Next i
     Else
      Activecell.Value = 1
        For i = 1 To Selection.Cells.Count - 1
        Activecell.Offset(0, -i).Value = Activecell.Value + i
        Next i
      End If
End If
    GenNumber = Activecell.Value
End Function
Can anyone say where is the wrong and how to solve it. Thank you.
