Mallin mukaisten merkkien poistaminen

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.