No, no frena...
Esiste la possibilità di sostituire i CHAR contigui con un solo CHAR usando la Funzione REPLACE
In sostanza ipotizza di avere una sequenza di N spazzi, puoi fare in modo che solo il 1° sia rimpiazzato... con un char speciale... di conseguenza poi vai a SPACCHETTARE per quello!
Esempio
Facendo il test nella Finestra Immediata ottieni 8, perchè 7 sono gli Spazzi + 1, ma le parole sono 2
?Ubound(Split("Pippo Pluto"," "))+1
8
Con quanto ti suggerisco invece ottieni 2:
?Ubound(Split(REPLACE("Pippo Pluto"," ","-",,1),"-")) + 1
2
Se pou ti vuoi addentrare in RegoularExpression, allora credo tu potrai in quel caso ottimizzare moltissimo il risultato, ma la complicazione è leggermente superiore... diciamo che il Pattern diverrà fondamentale...!
Ti faccio un esempio per farti capire
Function RegexTest()
Const sText = "ghgh lojeff lo errer lrer loj errer"
Dim regex As Object
Dim regexMatches As Object
Set regex = CreateObject("vbscript.regexp")
regex.Pattern = "\S+"
regex.IgnoreCase = True
regex.Global = True
Set regexMatches = regex.Execute(sText)
MsgBox regexMatches.Count
End Function
Come vedrai otterrai [7] che è il numero giusto, e questo indipendentemente gli spazzi nel testo siano RANDOM.
Vedi tu...