@Midori Corrigi, tirei a variável e deixei apenas o 1, mas o erro persiste.
Não consegui entender a lógica do Ubound dentro do Loop. Alterei o código como abaixo, mas na mesma linha que dava o erro anterior, agora entra em loop infinito.
Sub Importa_Txt()
Dim Registro As String
Dim Arquivo As Variant
Dim L As Long
Dim U As Long
Dim W As Worksheet
Set W = Planilha1
W.Select
Arquivo = Application.GetOpenFilename("Arquivo de Texto (*.txt),*.txt", Title:="Escolha o arquivo desejado")
If Arquivo = "" Or Arquivo = False Then
MsgBox "Arquivo de texto não selecionado. Processo abortado", vbOKOnly, "Planilha Modelo"
Exit Sub
End If
Open Arquivo For Input As #1
L = 5
Do Until EOF(1)
Line Input #1, Registro
U = UBound(Split(Registro, ";"))
If U >= 22 Then
If Split(Registro, ";")(20) = "999" Or Split(Registro, ";")(22) = "999" Then
L = L + 1
Cells(L, 2) = Split(Registro, ";")(6)
Cells(L, 3) = Split(Registro, ";")(1)
Cells(L, 4) = Split(Registro, ";")(2)
Cells(L, 5) = Split(Registro, ";")(3)
Cells(L, 7) = Split(Registro, ";")(10)
Cells(L, 8) = Split(Registro, ";")(12)
Cells(L, 9) = Split(Registro, ";")(16)
Cells(L, 10) = Split(Registro, ";")(17)
Cells(L, 11) = Split(Registro, ";")(20)
Cells(L, 12) = Split(Registro, ";")(18)
Cells(L, 13) = Split(Registro, ";")(19)
Cells(L, 14) = Split(Registro, ";")(22)
Cells(L, 15) = Split(Registro, ";")(24)
If Split(Registro, ";")(20) = "999" Then
With Cells(L, 6)
.Value = CDbl(Split(Registro, ";")(11) / -100)
.NumberFormat = "#,##0.00"
End With
Else
With Cells(L, 6)
.Value = CDbl(Split(Registro, ";")(11) / 100)
.NumberFormat = "#,##0.00"
End With
End If
End If
End If
Loop
Close #1
MsgBox "Arquivo importado", , "Planilha Modelo"
End Sub