es un poco largo pero aqui os lo dejo
Código:
Public Function getMeses(ByVal fechaInicial As DateTime, ByVal fechaFinal As DateTime) As DataTable
Dim maxMeses As Integer = 12
Dim mesInicial As Integer = fechaInicial.Month
Dim anoInicial As Integer = fechaInicial.Year
Dim mesFinal As Integer = fechaFinal.Month
Dim anoFinal As Integer = fechaFinal.Year
Dim dt As DataTable
dt = New DataTable("Periodo")
Dim row1 As DataRow
Dim Name As DataColumn = New DataColumn("Periodo") 'Declaramos una columna llamada Name
Name.DataType = System.Type.GetType("System.String") 'Asignamos el tipo de datos a la columna
dt.Columns.Add(Name) 'Añadimos la columna a la tabla
If anoInicial = anoFinal Then
Dim i As Integer
For i = mesInicial To mesFinal
row1 = dt.NewRow() 'Declaramos una nueva fila
row1.Item("Periodo") = convertMesToString(i) & "/" & anoInicial 'Asignamos un valor a esa fila
dt.Rows.Add(row1) 'Añadimos la fila completa a la tabla
Next i
Else
If anoInicial < anoFinal Then
Dim i As Integer
For i = mesInicial To maxMeses 'Recorremos desde la fecha inicial hasta el 12
row1 = dt.NewRow() 'Declaramos una nueva fila
row1.Item("Periodo") = convertMesToString(i) & "/" & anoInicial 'Asignamos un valor a esa fila
dt.Rows.Add(row1) 'Añadimos la fila completa a la tabla
Next i
anoInicial = anoInicial + 1
While anoInicial <= anoFinal
If anoInicial < anoFinal Then
For i = 1 To maxMeses
row1 = dt.NewRow() 'Declaramos una nueva fila
row1.Item("Periodo") = convertMesToString(i) & "/" & anoInicial 'Asignamos un valor a esa fila
dt.Rows.Add(row1) 'Añadimos la fila completa a la tabla
Next i
Else
If anoInicial = anoFinal Then
For i = 1 To mesFinal
row1 = dt.NewRow() 'Declaramos una nueva fila
row1.Item("Periodo") = convertMesToString(i) & "/" & anoInicial 'Asignamos un valor a esa fila
dt.Rows.Add(row1) 'Añadimos la fila completa a la tabla
Next i
End If
End If
anoInicial = anoInicial + 1
End While
End If
End If
getMeses = dt
End Function
Public Function convertMesToString(ByVal i As Integer) As String
Dim mes As String
mes = i.ToString
If mes.Length = 1 Then
mes = "0" & mes
End If
convertMesToString = mes
End Function