Troque sua rotina por esta:
Sub NumerosFaltando()
Dim cont As Variant
Dim Scont As Variant
cont = 0
Scont = 2
Range("a2").Select
While ActiveCell <> ""
cont = ActiveCell
While ActiveCell.Offset(1, 0) <> "" And ActiveCell.Offset(1, 0) - cont <> 1
cont = cont + 1
Cells(Scont, 2) = cont
Scont = Scont + 1
Wend
ActiveCell.Offset(1, 0).Select
Scont = Scont
Wend
End Sub
Ou por esta:
A diferença entre as duas é que nesta não ficamos amarrados em Ranges Fixos, podemos alterar na rotina a Linha e Coluna:
Sub NumerosFaltando2()
Dim Rng As Range, MyCell As Range
Dim sLinha, sCol As Variant
sLinha = 2 'Linha
sCol = 2 'Coluna
'define o Range na Worksheets("Plan1") e conta a quantidade de Itens no mesmo
Set Rng = Worksheets("Plan1").Range("A2", Range("A" & Rows.Count).End(xlUp))
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'varredura da coluna inteira de itens
For Each MyCell In Rng.Cells
'Define o primeiro valor
Set Valor = MyCell
'Define o proximo Valor
sValorProximo = MyCell.Offset(1, 0)
While Valor < sValorProximo - 1
Cells(sLinha, sCol) = Valor + 1
sLinha = sLinha + 1
Valor = Valor + 1
Wend
sValorProximo = MyCell.Offset(-1, 1)
Next MyCell
'ao finalizar volta para o primeiro item
Range("A1").Select
Application.ScreenUpdating = True
Application.EnableCancelKey = xlInterrupt
MsgBox "Concluído.", vbInformation + vbOKOnly
End Sub
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 16/02/2011 10:11 pm