| |
Fortgeschrittene ProgrammierungSETFOCUS führt zum Fehler 0x80004005 | | | Autor: Rainer | Datum: 22.06.17 17:59 |
| Hallo,
ich führe in einem Formular für mehrere Steuerelemente eine Datenkontrolle durch. Die Reihenfolge der Kontrolle wird durch ein Objektarray gesteuert, das alle zu überprüfende Steuerelemente enthält. Wird ein Fehler festgestellt, so soll das fehlerhafte Steuerelement mit der Methode SETFOCUS aktiviert werden. Bewege ich mich durch die Steuerelementefolge in der Reihenfolge des TABINDEX gibt es keine Probleme. Bei einer Rückwärtsbewegung in der Folge erscheint aus mir unverständlichen Gründen beim Aufruf der SETFOCUS-Methode in der Prüfroutine für das Zielsteuerelement eine Fehlermeldung mit dem Fehlercode 0x80004005.
Hat jemand eine Erklärung dafür und ev. auch eine Lösung?
Gruß, Rainer. | |
Re: SETFOCUS führt zum Fehler 0x80004005 | | | Autor: Blackbox | Datum: 22.06.17 18:16 |
| Hallo,
fehlt das Objekt, also das Steuerelement, so führt der Aufruf einer Methode auf ein nichtinstantiiertes Objekt natürlich zu dem Fehler.
Mir ist schleierhaft, wieso Du ein Objektarray angelegt hast, obwohl die Form doch selbst über die Controls-Auflistung das Gleiche! macht. | |
Re: SETFOCUS führt zum Fehler 0x80004005 | | | Autor: Rainer | Datum: 26.06.17 08:34 |
| Hallo Blackbox und Dieter,
das Array habe ich als günstigste Möglichkeit gesehen, um eine Steuerelementeauswahl (nicht alle sind für die Kontrolle erforderlich) und -reihenfolge (zur Gewährleistung von Abhängigkeiten) zu realisieren.
Die Fehlermeldung lautet:
"Laufzeitfehler '-2147467259 (800004005)':
Nicht näher bezeichneter Fehler."
Ergänzend sei noch hinzugefügt, daß es sich um eine VBA-Anwendung im Office 2010 handelt.
Gruß, Rainer. | |
Re: SETFOCUS führt zum Fehler 0x80004005 | | | Autor: Manfred X | Datum: 26.06.17 09:30 |
| Hallo!
Ich kann nur raten.
Hast Du für das betroffene Control eine Ereignisverarbeitung programmiert,
(Prüfroutine?) die auf das Setzen des Focus anspricht und im Code auf eine
nicht gegebene Voraussetzung trifft?
Prüfe: In welchem Zustand war das Control, als es den Fokus abgegeben hat?
Beitrag wurde zuletzt am 26.06.17 um 09:33:25 editiert. | |
Re: SETFOCUS führt zum Fehler 0x80004005 | | | Autor: Rainer | Datum: 26.06.17 10:18 |
| Hallo Dieter,
die genaue Fehlermeldung lautet:
"Laufzeitfehler '-2147467259 (800004005)':
Nicht näher bezeichneter Fehler."
Gruß, Rainer. | |
Re: SETFOCUS führt zum Fehler 0x80004005 | | | Autor: Rainer | Datum: 27.06.17 16:38 |
| Hallo Manfred X,
das Problem liegt nicht in einer eigenen Ereignisroutine.
Zur Erläuterung des zu lösenden Problems:
In dem fraglichen Formular gibt es eine Reihe von Steuerelementen, deren Inhalt in einer bestimmten Reihenfolge bearbeitet werden muß. Mit dem Verlassen jedes dieser Steuerelemente soll bisher erstellte Inhalt geprüft und bei Feststellung eines fehlerhaften Inhalts soll ein Fehlerhinweis ausgegeben werden und das betreffende Steuerelement mittels SETFOCUS-Methode die Steuerung erhalten. Die Überprüfung und Steuerungszuweisung erfolgt in einer zentralen Prozedur, die in der EXIT-Ereignisroutine jedes der betreffenden Steuerelemente aufgerufen wird.
Solange fehlerhafte Steuerelemente gefunden wurden bzw. bei Fehlerfreiheit das nächste Steuerelement in der Reihenfolge die Steuerung erhielt lief alles ordentlich. Nur bei einer Rückwärtsbewegung in der Reihenfolge mit der Maus oder SHIFT+TAB tritt dieser Focusfehler auf.
Ich habe nun auf der Grundlage Eurer Hinweise mit der Focus-Steuerung in der Prüfprozedur experimentiert. Diese Steuerung bestand darin, daß ich bei Fehlerfreiheit vor der Focus-Zuweisung das in der Reihenfolge nächste zu bearbeitende Steuerelement ermittelt habe. D.h., das Steuerelement +1. Hatte ich mit dem Mausklick dieser Zuordnung widersprochen also den Fortgang entgegen der Reihenfolge gefordert, trat der Fehler auf. Meine Vermutung ist, daß diese Erscheinung damit zusammenhängt, daß es im VBA nur die Ereignisse ENTER und EXIT, die zeitlich vor GOTFOCUS und nach LASTFOCUS liegen, gibt und damit der Fehler in der Focus-Steuerung im Zusammenhang steht.
Lange Rede, kurzer Sinn: nachdem ich diese zwangsweise Zuordnung des nächsten Steuerelementes vor dem
Aufruf der SETFOCUS-Methode aus der Procedur entfernt habe und mit den Ereignissen KEYDOWN und MOUSEDOWN/MOUSEMOVE die Rückwärtsbewegung steuere, läuft die Steuerelementearbeit im Formular einwandfrei.
Ich bedanke mich also für Eure Hilfe bzw. Eure Anregungen.
Bis zum nächsten Mal,
Rainer. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|