Olá, Jokaman
Quando vc atribui os valores de um range a uma matriz, esta última terá obrigatoriamente sempre duas dimensões, a primeira correspondendo às linhas e a segunda às colunas. Ambas começarão em 1 (base 1). Então no seu caso tanto Datai quanto Dataf serão matrizes com NLinhas por 1 coluna portanto terá que fazer o preenchimento no loop considerando esta dimensão ausente e também, antes, o ReDim, embora este seja desnecessário aqui, pois, por ser um Variant, a própria atribuição do intervalo a ele automaticamente já o redimensiona.
Além disso, faltou também redimensionar a matriz PosInicial.
Ficaria então:
Sub Overlapping_Dates()
...
...
ReDim Datai(1 To NDim,1)
ReDim Dataf(1 To NDim,1)
ReDim PosInicial(1 To NDim)
...
...
For i = 1 To NLinha - 14 + 1
Datai(i, 1) = CDbl(Datai(i, 1))
Dataf(i, 1) = CDbl(Dataf(i, 1))
PosInicial(i) = (Datai(i, 1) - DataMenor) * 1
Debug.Print PosInicial(i)
Next
End Sub
Postado : 13/06/2017 7:59 pm