É uma pena que você não tenha entendido a sub-rotina que você estava canibalizando melhor antes de começar a modificá-lo.
- A sub-rotina "WalkThePlank" procura por correspondências .
Quando encontrar uma linha em
Sheet1
que corresponda a uma linha emSheet2
, toma ação. Você está procurando valores exclusivos. ou seja, linhas emSheet1
que não correspondem a nada emSheet2
e vice-versa. Mas o que você está fazendo está acionando pares de linhas que não coincidem; ou seja, seSheet1!Row 1
não corresponder aSheet2!Row 1
, você executará uma ação. Isso é prematuro; você precisa digitalizar todo o caminho atéSheet2
para determinar seSheet1!Row 1
corresponde a qualquer linha emSheet2
. -
O autor da sub-rotina "WalkThePlank" fez algo isso não faz muito sentido. Depois de excluir a linha indexada pela variável
row
, ele define a variável como 0. Isso foi um desperdício, pois fez com que a sub-rotina reexaminasse todas asSheet1
linhas que ele já havia examinado e determinado como exclusivas. Mas, como exclui a linha que não é exclusiva (isto é, que corresponde à linhabRow
onSheet2
), ele não vai olhar para essa linha novamente, e não há um loop infinito. Para aumentar a curiosidade, ele poderia ter ditorow = 0
, mas, em vez disso, ele disse enigmaticamenterow = row - row
.Mas você precisa mudar isso. (Para ser mais preciso, eu acredito que você deveria elimine as instruções
row = …
dentro dosDo While
loops; exceto pelorow = row + 1
no final.) Como você não está excluindo linhas, isso faz fazer com que sua macro reexamine os mesmos dados repetidamente; isto é, é um loop infinito. Você precisa apenas continuar marcandoSheet1
. - Você pode ser capaz de anular um loop infinito do VBA
sem matar o Excel e perder seus dados
digitando Ctrl + Quebra .
Se o seu teclado não tiver uma chave Break ,
tente abrir o teclado na tela executando
osk
e clicando em Ctrl e depois em Pausa . Se isso não funcionar, tente Ctrl e, em seguida, ScrLk .
O Super User não é um serviço de criação de scripts. Eu acho que já expliquei o que está dando errado que você consiga consertar isso agora. Se você ainda não conseguir fazer funcionar, volte e diga onde você ficou preso.