Huomautus
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
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
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.
Käynnistä integroitu Visual Basic for Applications 7.0 -ikkuna painamalla ALT+F11.
Napsauta Lisää -valikosta Moduuli.
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
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.