Visual Basic for Applications:
Kirjoittaminen vakiovirheeseen

Kuinka:

VBA:ssa, koska suoraa sisäänrakennettua funktiota nimenomaan virheen vakiotulostukseen ei ole kuten joissakin muissa ohjelmointikielissä, yleinen kiertotapa sisältää Debug.Print-komennon käytön kehitysvaiheen virhetulosteille tai oman lokitusfunktion luomisen, joka jäljittelee tätä käyttäytymistä tuotantosovelluksissa. Alla on esimerkki siitä, miten voisit toteuttaa ja käyttää tällaista funktiota:

Sub WriteToErrorLog(msg As String)
    ' Oma funktio vakiovirheen kirjoittamisen jäljittelyyn
    ' Todellisessa käyttöönotossa tämä voisi kirjoittaa erilliseen lokitiedostoon tai omistettuun debuggausikkunaan
    Open "ErrorLog.txt" For Append As #1 ' Vaihda "ErrorLog.txt" haluamaksesi lokitiedostopoluksi
    Print #1, "VIRHE: " & msg
    Close #1
    Debug.Print "VIRHE: " & msg ' Tulostaa myös Välitön-ikkunaan IDE:ssä kehittäjän virheenjäljitykseen
End Sub

Sub Demonstration()
    ' Esimerkki WriteToErrorLog-funktion käytöstä
    WriteToErrorLog "Virhe tapahtui pyyntöäsi käsiteltäessä."
End Sub

Esimerkkituloste “ErrorLog.txt”-tiedostossa voisi näyttää tältä:

VIRHE: Virhe tapahtui pyyntöäsi käsiteltäessä.

Ja VBA:n IDE:n Välitön-ikkunassa:

VIRHE: Virhe tapahtui pyyntöäsi käsiteltäessä.

Syväsukellus

Visual Basic for Applications ei itsessään sisällä omistettua mekanismia kirjoittamaan vakiovirheeseen johtuen sen syvästä integroinnista emäntäsovellusten, kuten Excel, Word tai Access, kanssa, jotka perinteisesti nojaavat graafisiin käyttöliittymiin eivätkä konsolitulosteeseen. Tämä on merkittävä eroavaisuus konsolipohjaisiin sovelluksiin verrattuna, jotka yleensä kehitetään kielillä kuten C tai Python, jossa vakiotuloste ja vakiovirhevirrat ovat peruskäsitteitä.

Historiallisesti VBA:n keskittyminen on aina ollut enemmän vuorovaikutuksessa sen emäntäsovellusten asiakirjamallien kanssa ja vähemmän perinteisissä sovelluslokitusmekanismeissa. Siksi kehittäjät turvautuvat usein oman lokitusratkaisun toteuttamiseen, kuten esimerkissä nähtiin, tai käyttävät Windows API -kutsuja edistyneempien virheiden käsittelyn ja lokituksen tarpeiden varten.

Vaikka esitelty lähestymistapa tarjoaa kiertotien, kehittäjät, jotka etsivät kestävämpää lokitusta ja virheenkäsittelyä, saattavat tutkia ulkoisten järjestelmien tai kirjastojen integrointia, jotka kykenevät monimutkaisempaan lokitukseen. Nykyaikaisessa kehityksessä, erityisesti vianetsinnän ja ylläpidon näkökulmasta, selkeän, kontekstuaalisen ja erillisen vakio- ja virhelokitusten merkitystä ei voi liikaa korostaa, mikä ajaa monia etsimään ratkaisuja VBA:n natiivien kykyjen ulkopuolelta.