Denkt ihr aktuell über einen Umstieg von 32-Bit auf ein 64-Bit-Office nach. In Firmen könnte dieser Schritt möglicherweise tzz Problemen führen. Denn in der 64-Bit-Version von Visual Basic for Applications (VBA) gibt es unter Windows einen Compiler-Fehler, der seit Jahren nicht behoben worden ist. Die Migration zu einem 64-Bit-Office sollte daher überlegt werden. Ich hole mal einen Sachverhalt hervor, der mit bereits im August 2021 unter die Augen gekommen ist.
Anzeige
Ich bin bei The Register über diesen Beitrag auf das Thema aufmerksam geworden. Das Ganze ist Mitte 2021 bereits bei Stack Overflow in diesem Post aufgegriffen worden. Der Betroffene hat das Problem mit einem kurzen Quellcode-Beispiel demonstriert.
' this needs to be here to trigger the bug: Private Sub Class_Terminate() End Sub
Function ReturnFalse(o As Object) As Boolean
ReturnFalse = False
End Function
Sub Test()
Debug.Print ReturnFalse(New SomeClass)
If ReturnFalse(New SomeClass) Then
Debug.Print True
Else
Debug.Print False
End If
End Sub
Wird der Funktionsaufruf ReturnFalse in einer 32-Bit-VBA-Umgebung ausgeführt, liefert diese das erwartete Resultat FALSE FALSE zurück. In einer 64-Bit-VBA-Umgebung kommen jedoch die Resultat FALSE TRUE zurück. Der Thread-Ersteller hat den Fehler bis auf dieses minimale Beispiel zurückverfolgt.
Anscheinend liegt das Problem darin, dass die Verwendung eines temporären Objekts (hier new SomeClass) die Auswertung der IF-Bedingung irgendwie unterbricht. Es sieht so aus, als ob der Wert der Bedingung True ist, egal was passiert. Das ist ein schwerwiegender Fehler, denn der 64-Bit-Compiler spinnt und damit sind alle IF-Abfragen nicht mehr vertrauenswürdig.
Laut The Register wurde der Bug bereits 2018 in Excel User Voice an Microsoft gemeldet (der Beitrag wurde entfernt). Der Fehler besteht wahrscheinlich schon seit Jahren, möglicherweise seit der Einführung von 64-Bit-VBA in Office 2010. Der StackOverflow-Benutzer konnte diesen Fehler in allen Versionen von Office finden, beginnend mit 2013. Der Bug ist wahrscheinlich mindestens 8 Jahre alt. Der Fehler tritt in VBA auf dem Mac nicht auf. Ich kann es aktuell nicht testen – aber es sieht nicht so aus, als ob der Bug bisher behoben wurde. Irgend jemand mit einem 64-Bit-Office, der das verifizieren kann?
Anzeige
Anzeige
Ich erhalte bei einem Test (Excel 2016 64-Bit auf Win10) auch ein:
Falsch
Wahr
Gruß
Theo
Hallo,
der Test war mit Excel 2019:
Beides Mal war das Egebnis: false
Ebenso der Test mit der While-Schleife.
Ja, der Fehler ist bekannt und war leider über Jahre nachvollziehbar.
Ich hatte 2018 den Eintrag "35735881-fix-inlined-member-calls-on-user-objects-on-64-bit…" im UserVoice eingetragen, aber keinerlei Korrekturen erfolgten seitdem…
…bis er nach den letzten Updates 2021-12 plötzlich behoben wurde.
Meine automatischen Tests haben mir dies mitgeteilt. Getestet mit Microsoft Access 2013 64-Bit.
Leider muss ich meine Workarounds auf absehbare Zeit erst einmal weiter nutzen, da ich nicht davon ausgehen kann, dass unsere Kunden alle zeitnah ihr Office/VBA aktualisieren…
Sorry, anderes Thema: Privacy
Vor einigen Tagen habe ich Javascript entdeckt und eine Frage:
Document
// Media-Devices
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
console.log('Devise-Enumeration nicht möglich');
} else { console.log('Enumeration ok')};
navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
document.writeln('ok');
devices.forEach(function(device) {
console.log(device.kind + ': ' + device.label + ' ID = ' + device.deviceId);
});
})
.catch(function(err) {
console.log(err.name + ': ' + err.message);
});
Auf meinem Laptop wird der Videoinput mit "niwpA1…", der Audioinput mit "AEwShy…" angegeben. Wie eindeutig sind diese Werte?
Hi
Microsoft® Word für Microsoft 365 MSO (Version 2111 Build 16.0.14701.20254) 64 Bit
damit bekomme ich
Falsch
Falsch
Somit scheint der Bug korrigiert zu sein.
Microsoft 365 MSO (Version 2111 Build 16.0.14701.20206) 64-bit scheint auch schon richtig zu funktionieren.
Hallo,
funktioniert die Dateivorschau im Explorerer mittlerweile mit einer 64bit Version?
Gruss