Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Hilfe! Komische Fehlermeldung!

    Betrifft: Hilfe! Komische Fehlermeldung! von: Franz W.
    Geschrieben am: 01.09.2003 22:40:42

    Hallo Fachleute,

    bin gleich mit dem nächsten da und zwar mit einer merkwürdigen Fehlermeldung:

    in dem Block

    dlgKdAendern.txtKdNr = KdNr
    dlgKdAendern.txtTitel = KdTitel
    dlgKdAendern.txtNName = KdNName
    dlgKdAendern.txtVName = KdVName
    dlgKdAendern.txtco = Kdco
    dlgKdAendern.txtStrasse = KdStr
    dlgKdAendern.txtPLZ = KdPLZ
    dlgKdAendern.txtOrt = KdOrt
    dlgKdAendern.txtObjekt = Objekt
    dlgKdAendern.txtKtoNr = KtoNr
    dlgKdAendern.txtBLZ = BLZ
    dlgKdAendern.txtBank = Bank
    dlgKdAendern.txtNotiz = KdComm

    markiert er in der letzten Zeile den Teil .txtNotiz = (also inklusive Punkt bis incl. Gleichheitszeichen) mit der Meldung: "Fehler beim Kompilieren. Methode oder Datenobjekt nicht gefunden."

    txtNotiz ist ganz sicher ein Textfeld einer UF, auch sicher richtig geschrieben, genau wie alle übrigen auch. Und bei denen hauts hin. Das Textfeld txtNotiz hab ich grad nachträglich in die UF eingefügt. Sitz ich da auf der Leitung? Hab ich was übersehen? Oder warum macht er das? Ich bitte noch mal um Eure Hilfe.

    Vielen Dank im Voraus und Grüße
    Franz

      


    Betrifft: AW: Hilfe! Komische Fehlermeldung! von: RainerW
    Geschrieben am: 01.09.2003 22:48:14

    Hallo Franz,

    speicher mal deine Mappe, schließe sie und öffne sie dann wieder.
    Fehler weg?
    Excel erkennt manchmal nicht seine Objekte.
    Das merkst du auch daran, dass die die TextBox nicht im Codefenster
    unter ALLGEMEIN aufgefüht wird.

    Gruß
    Rainer


      


    Betrifft: AW: Hilfe! Komische Fehlermeldung! von: Franz W.
    Geschrieben am: 01.09.2003 22:57:44

    Hallo Rainer,

    danke, das hat geholfen, jetzt nimmt er's klaglos.

    Und wenn Du möglicherweise so fit bist mit Excel-Rätseln hätte ich da noch eine weitere Frage, wenn ich darf: beim Aufruf dieser UF setze ich den Cursor in das zweite Textfeld:

    dlgKdAendern.Show
    dlgKdAendern.txtTitel.SetFocus

    Wie gesagt: txtTitel ist das zweite Textfeld. Beim ersten Aufruf der UF nach dem Start der Mappe sitzt der Cursor aber immer im ersten Textfeld. Jedesmal nach Start der Mappe. Bei jedem weiterem Aufruf der UF sitzt der Cursor dann immer richtig in txtTitel, so wie ich es will.

    Gibt es dafür auch noch eine Erklärung? Oder gar Lösung? Oder ist das ein Bug, mit dem man leben muss?

    Vielen Dank schon mal im Voraus

    Grüße
    Franz


      


    Betrifft: AW: Hilfe! Komische Fehlermeldung! von: RainerW
    Geschrieben am: 01.09.2003 23:09:01

    Hallo Franz,

    im VBA-Menü |Datei|Aktievierungsreihenfolge kannst du die Reihenfole
    der Steuerelemente festlegen, in der sie den Focus erhalten sollen.

    Das funktioniert aber nicht immer, Excel weiß warum - aber nur Excel.

    Dann setze den Fokus auf den Abbrechen- oder Ok-Button und verändere solange
    den Parameter (Ziffer) in dem Befehl:
    Application.SendKeys ("{TAB 5}")
    bis dein gewünschtes Steuerelement den Fokus hat.

    Gruß
    Rainer


      


    Betrifft: AW: Hilfe! Komische Fehlermeldung! von: Franz W.
    Geschrieben am: 01.09.2003 23:14:36

    Hallo Rainer,

    die Aktivierreihenfolge habe ich festgelegt. Und die funktioniert bei mir sogar (dieses Excelmanko hab ich mir wohl gottseidank nicht reingezogen :-))). Aber die Positionierung des Cursors im txtTitel, in der Reihenfolge das zweite Textfeld, klappt trotz explizierter Anweisung im Code nicht beim ersten Aufruf der UF, erst bei den weiteren. Ich denke ich kann damit leben.

    Vielen Dank für Deine Mühe und Grüße
    Franz


      


    Betrifft: AW: Hilfe! Komische Fehlermeldung! von: RainerW
    Geschrieben am: 01.09.2003 23:29:10

    Hallo Franz,
    du mußt damit nicht leben!
    Probier es aus,
    lege deinen Startfocus auf den cmdAbbrechen
    darunter die Sendkeys-Methode mit der entsprechenden Tabzahl.
    Die ermittelst du, wenn du die UserForm aufrufst und die Tabtaste drückst
    bis der Focus auf dem cmdAbbrechen liegt.
    Dann drückst du wieder die Tabtaste, und zwar so oft, bis deine Textbox
    den Fokus hat.
    Diese Zahl fügst du als Parameter in die Sendkeys-Methode ein.

    Nun klappt's auch beim ersten Aufruf.

    Gruß
    Rainer


      


    Betrifft: AW: Hilfe! Komische Fehlermeldung! von: Franz W.
    Geschrieben am: 02.09.2003 00:21:33

    Hallo Rainer,

    hab's lange versucht, und er hat gemacht was er wollte. Eine Erklärung gab's jetzt von KLaus. Wenn ich die Befehle falsch anordne kann es eigentlich nicht hinhauen.

    Vielen Dank für Deine Hilfe und Grüße
    Franz


      


    Betrifft: AW: Hilfe! Komische Fehlermeldung! von: Klaus Schubert
    Geschrieben am: 01.09.2003 23:50:32

    Hallo Franz,

    eigentlich solltest du solche (SetFocus-)Einstellungen direkt in der UserForm mit dem Ereignis

    Private Sub UserForm_Initialize()
    txtTitel.SetFocus
    End Sub
    


    machen. Dieses Ereignis wird beim Aufrufen einer UserForm abgearbeitet, so dass du dadurch gewisse Grundeinstellungen deiner UserForm festlegen kannst, welches der Zweck dieses Ereignisses ist.

    Allerdings funktioniert es auch, wenn du die beiden Zeilen beim Aufruf miteinander vertauscht.

    dlgKdAendern.txtTitel.SetFocus
    dlgKdAendern.Show

    Der Grund,warum das so herum funktioniert, ist folgendermaßen:

    Bei deiner Reihenfolge wird zuerst

    dlgKdAendern.Show

    aufgerufen, also deine UserForm. Dein weiterer Code

    dlgKdAendern.txtTitel.SetFocus

    wird aber erst ausgeführt, nachdem du deine UserForm wieder schließt, vorher nicht. Dieses gilt immer dann, wenn die UserForm-Eigenschaft ShowModal = True ist, was frei übersetzt ungefähr bedeutet: Solange ich "UserForm" angezeigt werde, habe ich das Sagen und alles andere stoppt.
    Ist ShowModal = False , so wird der Code im Hintergrund ausgeführt, obwohl die UserForm angezeigt wird. Zu empfehlen ist allerdings ShowModal = True, um verschiedenen Problemen aus den Weg zu gehen.

    Schließt du also deine UserForm, wird der Code ausgeführt und txtTitel bekommt den Fokus, auch wenn die UserForm nicht angezeigt wird. Rufst du nun wieder deine UserForm auf, so ist der Fokus richtig.

    Ich hoffe, es war einigermaßen verständlich.

    Gruß Klaus


      


    Betrifft: AW: Hilfe! Komische Fehlermeldung! von: Franz W.
    Geschrieben am: 02.09.2003 00:18:31

    Hallo Klaus,

    vielen Dank für die Erklärungen. Zumindest bei mir klappt aber leider nur die zweite:

    vertauschen der Reihenfolge von .SetFocus und .Show. Das funktioniert bestens.

    Der Vorschlag mit

    Private Sub UserForm_Initialize()
    txtTitel.SetFocus
    End Sub
    


    haut nicht ganz hin: beim ersten Aufruf der UF geht er jetzt tatsächlich in txtTitel, bei jedem weiteren Aufruf landet er allerdings jedesmal auf dem Abbrechen-Button. Hab's auch schon mit Excel-Neustart (und sogar mit PC-Neustart) versucht, ändert aber nix, er will nicht.

    Aber mit dem anderen Tipp hast Du mir ja schon sehr geholfen.

    Vielen Dank dafür und Grüße
    Franz