Macro com Do While parece que não funciona
Enviado: 01 Mai 2020 às 13:45
Viva,
Estou na minha primeira postagem e gostava de obter a vossa ajuda e ficarei muito agradecido.
O que é estranho é que a minha macro já funcionou noutro ficheiro, e parou de funcionar, a partir do momento que alterei o nome da planilha, apesar de eu ter corrigido essas alterações na macro.
Em suma, pretendo inserir o numero 1 numa coluna que detém uma série de dados (planilha EMI) e ao executar a macro, detecta a linha ou as linhas que têm esse numero 1, copia e cola em outra folha (planilha QTAS), numa linha vazia. Depois, Volta à folha EMI, apaga a linha que acabou de copiar e volta à folha Qtas e posiciona o cursor numa determinada célula.
Muito obrigado pela vossa ajuda.
JoãoBento
Estou na minha primeira postagem e gostava de obter a vossa ajuda e ficarei muito agradecido.
O que é estranho é que a minha macro já funcionou noutro ficheiro, e parou de funcionar, a partir do momento que alterei o nome da planilha, apesar de eu ter corrigido essas alterações na macro.
Em suma, pretendo inserir o numero 1 numa coluna que detém uma série de dados (planilha EMI) e ao executar a macro, detecta a linha ou as linhas que têm esse numero 1, copia e cola em outra folha (planilha QTAS), numa linha vazia. Depois, Volta à folha EMI, apaga a linha que acabou de copiar e volta à folha Qtas e posiciona o cursor numa determinada célula.
Código: Selecionar todos
Anexo o arquivoSub Quotas()
Dim MyVar As Integer
Dim Em As Worksheet
Dim Qt As Worksheet
MyVar = Sheets("EMI").Range("M1").Value
Set Em = Sheets("EMI")
Set Qt = Sheets("Qtas")
Em.Select 'selecciona o folha que quero começar a trabalhar
Em.Range("A18").Select 'coloca o cursor onde quero que se inicie a busca
Do While ActiveCell.Value <> ""
If ActiveCell.Value = MyVar Then
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 13)).Copy 'Selecciono o que quero copiar
Qt.Select 'Selecciono a folha para aonde quero copiar
Range("A999").Select 'Vou ao fundo da tabela da coluna A
Selection.End(xlUp).Select 'Ando para cima
ActiveCell.Offset(1, 0).Select 'Desco uma linha
ActiveSheet.Paste
Em.Select 'Selecciono a folha onde quero apagar
ActiveCell.EntireRow.Delete 'Apago linha da célula activa
MsgBox "Quota inserida!" 'Envio de mensagem
Exit Do
End If
ActiveCell.Offset(1, 0).Select 'Ando uma linha para baixo, evitando o loop eterno
Loop
Qt.Select 'Selecciono a folha onde quero acabar
Range("A1").Select 'Selecciono a célula onde quero por o cursor
End Sub
Muito obrigado pela vossa ajuda.
JoãoBento