Sottotitolo: Due piccioni con una favola! Questo pezzullo lo dedico agli amanti del fast food… del prendi veloce e porta via alla svelta altrimenti si raffredda! 🙂 Due piccole funzioncine da utilizzare al momento, senza pretese. La favola in questione è che spesso le cose più semplici sono quelle che si utilizzano più spesso. Questo codice è indipendente da Excel, funziona cioè benissimo in qualunque applicativo della suite Office.
La prima, slice, serve per ottenere una sottostringa dal carattere tale al carattere talaltro, di una stringa più grande.
La seconda, removespaces, fa una cosa tanto semplice quanto noiosa, cioè rimuove da una stringa gli spazi (del tutto) o solo quelli ridondanti, restituendo una stringa pulita pulita. La particolarità di questa piccola routine è che sfrutta una “espressione regolare” (l’oggetto VbScript.Regexp) per trovare le occorrenze di almeno due spazi consecutivi e sostituirli con uno spazio solo. Le “espressioni regolari” sono uno strumento molto potente presente in tutti i linguaggi evoluti, la versione VBA e VBScript è piuttosto povera di funzioni (ha limitazioni pesanti) ma per piccoli scopi funziona bene. Magari un giorno ne vien fuori un altro piccolo articolo… piccolo però, perchè l’argomento è vastissimo e anche piuttosto complicato 🙂
Slice
Public Function slice(ByVal s As String, ifrom As Integer, ito As Integer) As String
'affetta una stringa e restituisce una sottostringa
'che inizia dal carattere ifrom e finisce al carattere ito, compresi
' es. slice ("pippo", 2, 4) --> ipp
If ito - ifrom + 1 <= 0 Then slice = "": Exit Function
slice = Mid(s, ifrom, ito - ifrom + 1)
End Function
Esempio di slice (che in fondo vuol dire “affetta”):
slice("tanto va la gatta al largo che ci lascia lo zio pino", 15, 24) = "tta al lar"
Removespaces
Function removespaces(ByVal Source As String, Optional allspaces As Boolean = True) As String
'rimuove gli spazi da source.
'di default (true) toglie tutti gli spazi, se false invece riduce gli spazi a uno solo
Select Case allspaces
Case True
Dim i As Integer
i = InStr(Source, " ")
Do
Source = Replace(Source, " ", "")
i = InStr(Source, " ")
Loop Until i = 0
removespaces = Source
Case False
Dim oRE As Object
Set oRE = CreateObject("vbscript.regexp")
oRE.Global = True
oRE.Pattern = " {2,}"
removespaces = Trim(oRE.Replace(Source, " "))
Set oRE = Nothing
End Select
End Function
Esempio di removespaces:
removespaces(" tanto va la gatta al lardo") = "tantovalagattaallardo"
removespaces(" tanto va la gatta al lardo " , False) = "tanto va la gatta al lardo"

› Funzioni Slice e Removespaces
-
-
-
Login Registrati