No seu loop aparentemente não há o incremento da variavel uprng, então a mesma sempre terao valor 2
Então experimente assim>
Do While uprng < maxrng
Range("L" & uprng).End(xlDown).Copy
botrng = Range("L" & uprng).End(xlDown)
botrng = Replace(botrng, "$", "-", 1, 1)
botrng = Mid(botrng, InStr(1, botrng, "$") + 1, Len(botrng) - InStr(1, botrng, "$"))
uprng=uprng+1
Loop
Boa noite obrigado por responder,
Então eu só coloquei uma parte do código, mas meu problema é com o fato que ela está considerando VERDADEIRO essa inequação: 2>1690
Vide código até aonde parei, coloquei anotações nas linhas que considero importante:
Sub inputnf()
Dim maxrng, uprng, botrng As Variant
Sheets(1).Select
Range("L2").Select
celladd = ActiveCell.Address
uprng = Replace(celladd, "$", "-", 1, 1)
uprng = Mid(uprng, InStr(1, uprng, "$") + 1, Len(uprng) - InStr(1, uprng, "$")) 'variável adota valor = 2
maxrng = Range("C1048576").End(xlUp).Address
maxrng = Replace(maxrng, "$", "-", 1, 1)
maxrng = Mid(maxrng, InStr(1, maxrng, "$") + 1, Len(maxrng) - InStr(1, maxrng, "$")) 'variável pega ultimo cadastro e adota o valor (no caso = 1690)
Do While uprng > maxrng ' Faça enquanto 2(uprng) > 1690 (maxrng), essa inequação do jeito que está, está entrando no loop...mas essa inequação está incorreta... esperava usar "<" pois 2<1690 é verdadeiro, logo daria sequencia no loop.
botrng = Range("L" & uprng).End(xlDown).Offset(-1, 0).Address
botrng = Replace(botrng, "$", "-", 1, 1)
botrng = Mid(botrng, InStr(1, botrng, "$") + 1, Len(botrng) - InStr(1, botrng, "$"))
Range("L" & uprng).Copy
Range("A" & uprng & ":" & "A" & botrng).PasteSpecial (xlPasteValues)
uprng = Range("L" & uprng).End(xlDown).Address 'aqui está o incremento, procuro o último valor achado (no caso inicial L2) vou para baixo na proxima cheia e adoto o valor daquela linha....
uprng = Replace(uprng, "$", "-", 1, 1)
uprng = Mid(uprng, InStr(1, uprng, "$") + 1, Len(uprng) - InStr(1, uprng, "$"))
Loop
End Sub
Obrigado pela atenção.
final
Postado : 20/05/2013 6:16 pm