Excel 2010 / VB- Loop fino a quando non viene trovato alcun risultato
![](http://img.brin-designs.com/img/games/290/excel-2010-vb-loop-until-no-result-is-found.png)
- Problema
- Soluzione
Problema
Sto cercando di manipolare i dati da un programma DOS molto vecchio. Ho una lunga macro che funziona bene fino alla fine dove si trova per alcune parole specifiche e cicli che eliminano le righe con queste parole fino a quando non riesce a trovare nulla, quindi si presenta con un errore e si ferma. Quello che sto cercando di fare è che lo script continui a funzionare fino a quando non trova più istanze delle parole di ricerca e poi prosegue nella parte successiva dello script che vogliamo scrivere.
Ecco il ciclo di codice in cui si blocca:
Dim lCount As Long Dim lNum As Long lCount = 0 lNum = 11 Application.ScreenUpdating = False Do While lNum> 10 Columns ("B: B"). Seleziona Selection.Find (Cosa: = "CE - Parish Current", After: = ActiveCell, LookIn: = xlFormulas, _ LookAt: = xlPart, SearchOrder: = xlByRows, SearchDirection: = xlNext, _ MatchCase: = False, SearchFormat: = False). Attiva 'ActiveCell.Seleziona ActiveCell.Offset (-1, 0) .Seleziona Selection.EntireRow.Delete Selection.EntireRow.Delete Selection.EntireRow.Delete Selection.EntireRow.Delete Selection.EntireRow.Delete Selection.EntireRow.Delete Selection.EntireRow.Delete Selection.EntireRow.Delete Selection.EntireRow.Delete Loop
Vogliamo fare questa stessa funzione in pochi altri script che abbiamo scritto e il mio capo e io siamo entrambi novizi in questo modo qualsiasi aiuto che potresti essere in grado di offrire è molto apprezzato!
Soluzione
Il codice dice
Do While lNum> 10
Quindi quando lNum diventa mai inferiore o uguale a 10 per terminare il ciclo
Dal momento che non hai fornito tutte le informazioni, questa è la soluzione più logica
Do While True Set Cell = Columns (2) .Find (Cosa: = "CE - Parish Currently", _ After: = Celle (1, 2), _ LookIn: = xlFormulas, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ SearchDirection: = xlNext, _ MatchCase: = False, _ SearchFormat: = False) Se la cella non è nulla, quindi Esci Cella.EntireRow.Delete Loop
Grazie a rizvisa1 per questo suggerimento.