Jaa


Käännösvirhe muokattaessa VBA-makroa Office 2010 -ohjelman 64-bittisessä versiossa

Oireet

Oletetaan seuraava tilanne:

  • Kirjoitat Microsoft Visual Basic for Applications (VBA) -makrokoodin, joka käyttää Declare-lausekkeita.

  • VBA-makrokoodisi käyttää käännösvakioita. Esimerkiksi makrokoodisi käyttää yhtä seuraavista käännösvakioista:

    • #If VBA7
    • #If Win64
  • Käytät #Else lohkoa ehdollisessa lohkossa. #Else-lohkossa käytetään syntaksia Declare-lausekkeelle, joka on suunniteltu suoritettavaksi Microsoft Visual Basic for Applications 6.0:ssa.

  • Koodia muokataan Microsoft Office 2010 -ohjelman 64-bittisessä versiossa.

  • Yrität muuttaa #Else-lohkon Määrittele-lauseketta.

Tässä skenaariossa näyttöön tulee seuraava virhesanoma:

Microsoft Visual Basic for Applications

Compile error:

The code in this project must be updated for use on 64-bit
systems. Please review and update Declare statements and then
mark them with the PtrSafe attribute.

Huomautus

Tämä ongelma ilmenee vain, kun muokkaat VBA-makroa. Tämä ongelma ei ilmene, kun suoritat makron.

Ratkaisu

Voit ratkaista tämän ongelman ohittamalla Käännösvirheen ja suorittamalla VBA-koodin Office 2010 -ohjelman 64-bittisessä versiossa.

Lisätietoja

Ongelman toistamisen vaiheet

Microsoft tarjoaa ohjelmointiesimerkkejä vain havainnollistamista varten ilman takuuta ilmaistuna tai epäsuorana, mukaan lukien muun muassa oletetut takuut soveltuvuudesta kaupankäynnin kohteeksi ja/tai sopivuudesta tiettyyn tarkoitukseen. Tässä artikkelissa oletetaan, että olet perehtynyt osoitettavaan ohjelmointikieleen sekä toimintosarjojen luomiseen ja virheenkorjauksen työkaluihin. Microsoftin tukihenkilöt voivat auttaa selittämään tietyn toiminnon toiminnallisuutta, mutta he eivät muokkaa näitä esimerkkejä lisätoimintojen tarjoamiseksi tai toimintosarjojen muodostamiseksi tarpeidesi mukaan.

Lisätietoja käytettävissä olevista tukivaihtoehdoista ja siitä, miten voit ottaa yhteyttä Microsoftiin, on seuraavassa Microsoftin verkkosivustossa:

https://support.microsoft.com/contactus

  1. Käynnistä Microsoft Excel 2010 64-bittinen versio, joka on käytössä Windowsin 64-bittisessä käyttöjärjestelmässä.

    Huomautus

    Uusi työkirja avataan oletusarvoisesti.

  2. Käynnistä integroitu Visual Basic for Applications 7.0 -ikkuna painamalla ALT+F11.

  3. Napsauta Lisää -valikosta Moduuli.

  4. Kopioi ja liitä seuraava koodi näyttöön äki olevassa koodiikkunassa:

    #If VBA7 Then
        Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
    #Else
        Private Declare Sub Sleep Lib "kernel32" (ByVal ms as Long)
    #End If
    
  5. Muuta jokaisessa Declare-lauseessa manuaalisesti minkä tahansa parametrin nimi, joka välitetään kohteesta "ms" nimeksi "millisekuntia".

Kun muutat toista Määrittele-lauseketta, Visual Basic for Applications 7.0 ilmoittaa virheestä, joka ilmaisee, että sinun on käytettävä PtrSafea. Raportti on kuitenkin virheellinen, koska rivi on osassa, joka suoritetaan vain Visual Basic for Applications 6.0. VBA 6.0 ei käytä PtrSafea. Siksi voit turvallisesti ohittaa virhesanoman.