Visual Basic - wie-force-Ereignis ausgelöst
Ich bin neu in VB (VBA verwenden, tatsächlich) und ich möchte zu zwingen, ein Ereignis ausgelöst. Speziell, ich bin eine Aktualisierung der Wert in eine textbox und ich möchte sagen, dass Textfeld AfterUpdate() Ereignis.
Private Sub cmdCreateInvoice_Click()
Me.txtInvDate = '11/01/10'
Me.txtInvDate.AfterUpdate
End Sub
Während der Laufzeit, bekomme ich die Fehlermeldung "Compile Error: Invalid Use of Property". Wenn ich versuche etwas ähnliches, aber mit dem click-Ereignis (ex: cmdCreateInvoice.Klicken Sie auf), die NICHT über eine Eigenschaft, die Aktien den Namen, bekomme ich eine Fehlermeldung, die sagt "Kompilieren Fehler: Methode oder Datenelement nicht gefunden".
Ich weiß, es muss einen Weg, um das Feuer ein Ereignis aus dem anderen. Aber was ist die richtige syntax?
Danke!
Ich möchte das Textfeld, um das Feuer der AfterUpdate-Ereignis, das bereits vorhanden ist
Ist dieser code, den Sie geschrieben obwohl; wie haben Sie eine:
Private Sub txtInvData_AfterUpdate()
dass Sie möchten, um das Feuer?ja, ich habe eine Prozedur geschrieben, die das Ereignis behandelt (es funktioniert, wenn das event wird automatisch ausgelöst, und ich möchte, dass das gleiche passieren wird, wenn ich manuell auslösen)
Fast immer ist es am besten in diesen Situationen haben eine sub, die macht, was Sie wollen, und rufen Sie die sub in beide AfterUpdate und der sub oben, und überall sonst, dass es erforderlich werden kann.
InformationsquelleAutor twpc | 2010-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
AFAIK gibt es keine Weg zu "Feuer ein Ereignis manuell" in VB(A). Was Sie kann tun ist, rufen Sie die event-handler manuell und für diese, rdkleine hat Ihnen die Antwort bereits:
Diese haben genau den gleichen Effekt, als wenn die Veranstaltung hatte gefeuert (obwohl es nicht nicht geben Sie die gesamte Kette von Ereignissen, die möglicherweise auch Feuer zusammen mit es--es sei denn, Sie
Call
Ihre Hundeführer).IgorM hat ein anderer Gültiger Punkt, in Kommentaren auf seine Antwort-es ist "sauberer" zu schreiben, ein verschiedenen Sub zu tun, die Arbeit, die Sie erledigen wollen, dann rufen Sie es von den Ereignis-handler & überall dort, wo Sie versuchen, es jetzt zu tun (button-Klick?). Also:
Könnte man auch machen
DoWhatever
eine Public Sub in einem Modul.Bearbeiten
Und Nein, in VB(A) es ist egal, was um Sie definieren Ihre Sub (oder Funktion) Routinen.
InformationsquelleAutor RolandTumble
Call
Das war eine Vermutung.
Gut, eine Vermutung sollte nicht qualifizieren, wie ein SO die Antwort.
Es war eine Vermutung, und ich korrigierte die Antwort. Die Antwort ist solide. Ich verstehe nicht, die downvote als die Antwort richtig ist.
InformationsquelleAutor Ralf de Kleine
Versuchen Sie etwas wie dies:
Verwenden LostFocus-Ereignis, wenn Sie ändern Sie den Wert manuell ein.
Oder Sie können verwenden einen anderen Weg:
Versuchen, verwenden Sie Change-Ereignis.
Es gibt keinen Unterschied. Nach der Aktualisierung der Wert in textbox-Ereignis Ändern aufgerufen werden.
Ich sehe, was du sagst. Dies kann zwar tatsächlich lösen mein Aktuelles Thema, aber es hilft nicht, in anderen Fällen-was, wenn ich anrufen möchte eine Schaltfläche click-Ereignis, zum Beispiel?
Nur ich denke, es ist nicht eine gute Idee zu nennen, UI-Ereignisse manuell. Wenn Sie aufrufen müssen, Klicken Sie auf Ereignis dann können Sie eine Funktion erstellen und klicken Sie dann im Click-Ereignis Sie können diese Funktion aufrufen, aber auch Sie können diese Funktion aufrufen, was Sie wollen
InformationsquelleAutor Igor
Code offenbar (leider) zwingen Veranstaltungen Feuer:
Kräfte BeforeUpdate und AfterUpdate, um das Feuer, wie ich es verstehe. Es gibt wohl mehr Fälle zu. Alle geheimen Haken, die Sie an Ihre Codes in dieser Weise reflektieren schlechtes design meiner Sicht und führen unweigerlich zu inadvertant & frustrierend loops erstellt werden.
InformationsquelleAutor xstack