Visual Basic for Applications:
Mallin mukaisten merkkien poistaminen
Kuinka:
VBA:ssa voit käyttää Replace
-funktiota tai säännöllisiä lausekkeita merkkien poistamiseen kaavan mukaisesti. Tässä on esimerkit molemmista menetelmistä:
Käyttäen Replace
-funktiota
Replace
-funktio on suoraviivainen tietyille merkeille tai sekvensseille poistamiseen.
Sub DeleteSpecificChars()
Dim originalString As String
originalString = "123-ABC-456-XYZ"
' Viivojen poistaminen
Dim resultString As String
resultString = Replace(originalString, "-", "")
Debug.Print originalString ' Ennen: 123-ABC-456-XYZ
Debug.Print resultString ' Jälkeen: 123ABC456XYZ
End Sub
Käyttäen säännöllisiä lausekkeita
Monimutkaisemmille kaavoille säännölliset lausekkeet tarjoavat voimakkaan vaihtoehdon.
Ota ensin käyttöön Microsoft VBScript Regular Expressions -kirjasto kohdassa Työkalut > Viittaukset Visual Basic -editorissa.
Sub DeletePatternChars()
Dim regEx As Object
Set regEx = CreateObject("VBScript.RegExp")
Dim strPattern As String
strPattern = "\d" ' Kaava, joka vastaa kaikkia numeroita
With regEx
.Global = True
.IgnoreCase = True
.Pattern = strPattern
End With
Dim originalString As String
originalString = "Poista 123 ja 456"
' Käyttäen Replace-metodia vastaavuuksien poistamiseen
Dim resultString As String
resultString = regEx.Replace(originalString, "")
Debug.Print originalString ' Ennen: Poista 123 ja 456
Debug.Print resultString ' Jälkeen: Poista ja
End Sub
Syväsukellus
Historiallisesti kaavan mukainen vastaaminen ja merkkijonokäsittely VBA:ssa on ollut jonkin verran rajallista, erityisesti verrattuna nykyaikaisiin ohjelmointikieliin, jotka tarjoavat laajoja vakio-kirjastoja näille tehtäville. Replace
-funktio on yksinkertainen ja tehokas suorille korvauksille, mutta se ei tarjoa joustavuutta monimutkaisempiin kaavan mukaisiin vastaamisiin. Tässä säännölliset lausekkeet (RegEx) tulevat mukaan, tarjoten paljon rikkaamman syntaksin kaavan mukaiseen vastaamiseen ja merkkijonokäsittelyyn. Kuitenkin säännöllisten lausekkeiden käyttö VBA:ssa vaatii lisäasetuksia, kuten Microsoft VBScript Regular Expressions -viitteen käyttöönoton, joka saattaa olla este uudemmille käyttäjille.
Näistä rajoituksista huolimatta RegEx-tuen esittely VBA:ssa oli merkittävä askel eteenpäin, tarjoten voimakkaamman työkalun ohjelmoijille, jotka työskentelevät tekstin käsittelyn parissa. Monimutkaisemmissa skenaarioissa, joissa sisäänrakennetut merkkijonofunktiot jäävät vajaaksi, säännölliset lausekkeet tarjoavat monipuolisen ja tehokkaan vaihtoehdon.
On syytä huomata, että niille, jotka työskentelevät ympäristöissä tai projekteissa, joissa suorituskyky on kriittistä, ulkoisten kirjastojen käyttö tai integrointi muihin ohjelmointikieliin saattaa tarjota paremman suorituskyvyn ja enemmän ominaisuuksia. Kuitenkin monille päivittäisille tehtäville VBA:ssa, nämä natiivit menetelmät pysyvät käytännöllisenä ja saavutettavana valintana.