Av Philipp Stiefel, opprinnelig publisert 15.August 2019, sist oppdatert 2. September 2019
før vi begynner, la oss sette ting i perspektiv: «Ugyldig prosedyrekall ELLER ARGUMENT» er En Ganske Vanlig feil. Hvis du støter på denne feilen mens du skriver ny kode, er det mest sannsynlig en faktisk feil i koden din og ikke relatert til emnet i denne teksten.
Hvis programmets kode kjørte feilfritt, men nå plutselig mislykkes med En Kjøretidsfeil ‘5’ – «Ugyldig prosedyrekall eller argument», er det sannsynligvis et problem forårsaket av Windows-oppdateringene 13.August 2019 for alle gjeldende versjoner Av Windows.
dette påvirker alle gjeldende Versjoner Av Office / VBA I Windows 10, Windows 8.1 og Windows 7 i tillegg til Alle Windows Server-operativsystemer Fra Windows Server 2008 til Windows Server 2019.
Microsoft selv har allerede lagt til denne advarselen i listen «Kjente problemer i denne oppdateringen».
«når du har installert denne oppdateringen, kan programmer som ble laget med Visual Basic 6 (VB6), makroer som bruker Visual Basic FOR Applications (VBA) og skript eller programmer som bruker Visual Basic Scripting Edition (VBScript) slutte å svare, og du kan få en «ugyldig prosedyrekallfeil.»
Microsoft undersøker for øyeblikket dette problemet og vil gi en oppdatering når den er tilgjengelig.»
(Kilde: NOEN AV KB-artiklene nedenfor)
Her er en liste over oppdateringene som forårsaker problemet (uten krav om fullstendighet):
- Windows 10, Versjon 1903 – 13.August 2019—KB4512508 (Os – Build 18362.295)
- Windows 10, Versjon 1809—13. August 2019 – KB4511553 (Os—Build 17763.678)
- WINDOWS 10, VERSJON 1709—13. AUGUST 2019 – KB4512516 (Os—Build 16299.1331)
- WINDOWS 10, VERSJON 1703-13. August 2019-Kb4512507 (Os-Build 15063.1988)
- windows 8.1-13. august 2019-kb4512489 (kun sikkerhetsoppdatering)
- WINDOWS 8.1-13. August 2019-KB4512488 (Månedlig Samleoppdatering)
Windows 10, Versjon 1803 – 13. August 2019—kb4512501 (Os – Build 17134.950)
- noen reproduserbare feilscenarier forårsaket Av Windows Update
- Nestede prosedyrer med ParamArray-argumenter
- Passerer en tom matrise ByVal
- bruke Matrisefunksjonen til å fjerne en kombinasjonsboks med flere verdier
- Ytterligere hensyn – «…kan slutte å svare … »
- Generell Løsning / Midlertidig Løsning
- Update 2019-08-18: En Løsning ser ut til å være i gang …
- Update 2019-09-02-Patcher tilgjengelig for alle operativsystemer
noen reproduserbare feilscenarier forårsaket Av Windows Update
jeg oppdaget to forskjellige, selv om relaterte, scenarier var feilen» Ugyldig prosedyrekall eller argument » oppstår på grunn av den installerte oppdateringen. Begge er relatert til tomme arrays.
Nestede prosedyrer med ParamArray-argumenter
hvis koden din inneholder flere prosedyrer der variable ParamArray-argumenter sendes fra en prosedyre til den andre, vil dette føre til feilen hvis param-matrisen på toppnivå var tom.
Her er et lite VBA-kodeeksempel som gjengir feilen.
Jeg Har Ikke Funnet Noen Løsning For Dette Feilscenarioet Ennå.
Passerer en tom matrise ByVal
hvis du sender en tom matrise til en prosedyre forventer En Variant type argument ByVal, vil prosedyrekallet mislykkes med feilmeldingen. Dette skyldes trolig den samme interne mekanikken som forrige feil situasjon.
Her er et lite eksempel som gjengir feilen.
i dette tilfellet feilen kan forhindres fra å vises ved å sende i den tomme matrisen ByRef til prosedyren.
Dette bør være en mulig løsning i de fleste scenarier.
bruke Matrisefunksjonen til å fjerne en kombinasjonsboks med flere verdier
hvis Du bruker Matrisefunksjonen uten argumenter for å tilordne en tom matrise til en variabel, vil du igjen se feilen «Ugyldig prosedyrekall». Men hvis Du bruker Array-funksjonen uten argumenter for å fjerne en kombinasjonsboks med flere verdier fra VBA-kode, vil du se en kjøretidsfeil 2004 » Det er ikke nok minne til å utføre denne operasjonen . Lukk unødvendige programmer og prøv operasjonen på nytt.»
jeg møtte ikke denne varianten av problemet selv, men det ble rapportert i En tråd på Access Mdsn Forumet.
Ytterligere hensyn – «…kan slutte å svare … »
de ovennevnte scenariene er ganske enkle å diagnostisere, når du vet om årsaken til feilen. Imidlertid er jeg mer bekymret for» kan slutte å svare » – delen fra beskrivelsen av know-problemet. Dette er noe som er mye vanskeligere å spore og diagnostisere. Nå som vi vet om denne feilen, kan vi sannsynligvis diagnostisere en slik situasjon også, men uten denne kunnskapen ville det vært nesten umulig å finne årsaken.
Generell Løsning / Midlertidig Løsning
Så Lenge Microsoft Ikke har gitt ut en ny oppdatering som adresserer og løser dette problemet, avinstallerer den eneste virkelige «løsningen» Windows-Oppdateringene 13.August 2019. Når du har avinstallert oppdateringen, vil koden din kjøre som før. Ingen ytterligere tiltak nødvendig.
selvfølgelig er det ikke ideelt å avinstallere og utsette en sikkerhetsoppdatering For Windows. Du bør veie om effekten av denne oppdateringen PÅ VBA-programmene er alvorlig nok til å rettferdiggjøre dette.
Til min kunnskap er det ingen eksisterende utnyttelse for sikkerhetsproblemene som er løst med den oppdateringen ennå. (Disclaimer: jeg er ikke en sikkerhetsekspert!) Så, med tanke på flere applikasjoner som er sterkt påvirket av problemene beskrevet ovenfor, anbefalte jeg kundene mine å utsette oppdateringen til videre varsel.
Update 2019-08-18: En Løsning ser ut til å være i gang …
i de sene timene 16. August lanserte Microsoft oppdateringen 16. August 2019—KB4512494 (OS-Build 16299.1365) Til Windows 10, Versjon 1709 (bare!).
listen «Forbedringer og rettelser» for denne oppdateringen inneholder dette elementet:
- Løser et problem som kan føre til at følgende slutter å svare:
- Programmer som ble laget med Visual Basic 6 (VB6).
- Makroer som bruker Visual Basic For Applications (VBA).
- Skript eller apper som bruker Visual Basic Scripting Edition (VBScript).
du kan også få en «Ugyldig prosedyrekall» – feil.
Så, Microsoft synes å være virkelig å gjøre en innsats for å få dette rotet løst raskt. Så langt er det bare løsningen for den spesielle Versjonen 1709 Av Windows 10. Det er ingen løsning tilgjengelig for nyere versjoner Av Windows 10, enn si Windows 7 eller 8, ennå. Likevel, dette er en silver lining i horisonten, og det synes å være sannsynlig at andre oppdateringer fikse problemet på andre versjoner Av Enker vil følge i neste uke.Oppdatering: Det er en løsning tilgjengelig For Windows 8.1 / Windows Server 2012 R2 også. Denne oppdateringen er ikke oppført på siden oppdateringslogg For Windows 8.1 På Microsoft-webområdet, og den er ikke tilgjengelig Via Windows Update. Du kan installere Den via Microsoft Update-Katalogen. – Jeg har nettopp installert den på min hovedutviklingsdatamaskin, og det ser ut til å fikse alle reproduserbare variasjoner av denne feilen nevnt ovenfor.
Update 2019-09-02-Patcher tilgjengelig for alle operativsystemer
uken etter den opprinnelige, problematiske Windows Update, lanserte Microsoft Et par patcher for å rydde OPP vba-problemene. Dessverre manglet oppdateringen for Den mest oppdaterte versjonen Av Windows 10 i noen tid. Til slutt, i August 30, lanserte Microsoft også banen For Windows 10, V1903.Det er litt irriterende At Microsoft oppfordrer Windows 10-brukere til å oppdatere til den nyeste versjonen hele tiden, men slipper deretter den viktige oppdateringen for å løse DETTE alvorlige VBA-problemet uker senere enn de tilsvarende oppdateringene for alle andre operativsystemer.
Her er en liste over alle oppdateringer som løser VBA-problemet:
- Windows 10, versjon 1903-30. August 2019 – KB4512941 (Os-Build 18362.329)
- Windows 10, versjon 1809 + Windows Server 2019 – 17.August 2019—KB4512534 (OS-Build 17763.720)
- Windows 10, versjon 1803 – 19.August 2019—KB4512509 (Os – Build 17134.984)
- Windows 10, versjon 1709—16. August 2019 – KB4512494 (Os—Build 16299.1365)
- WINDOWS 10, VERSJON 1607 + Windows server 2016-august 17, 2019-kb4512495 (os-build 14393.3181)
- WINDOWS 8.1 windows server 2012 r2-oppdatering kb4517298 august 16, 2019
- windows 7 sp1 og windows server 2008 r2 sp1: oppdater kb4517297 16. august 2019
(FEIL NEDLASTINGSKOBLING. Her er den riktige nedlastingskoblingen Til Microsoft Update-Katalogen)
Windows 10, versjon 1703 – 17. August 2019—kb4512474 (os – build 15063.2021)