Hallo,
wie kann man bei Programmstart einen Tastendruck (CommandButton) quasi automatisch betätigen?
Danke.
Gruß
Gunter
Hallo,
wie kann man bei Programmstart einen Tastendruck (CommandButton) quasi automatisch betätigen?
Danke.
Gruß
Gunter
Hallo,
wie kann man bei Programmstart einen Tastendruck
(CommandButton) quasi automatisch betätigen?
nicht klicken, sondern Die Prozedur für das Klickereignis aufrufen.
Beispiel:
Option Explicit
Private Sub Command1\_Click()
Text1.Text = "Test"
End Sub
Private Sub Form\_Load()
Command1\_Click
End Sub
Gruß Rainer
Hallo,
wie kann man bei Programmstart einen Tastendruck
(CommandButton) quasi automatisch betätigen?nicht klicken, sondern Die Prozedur für das Klickereignis
aufrufen.
Hallo Rainer,
genau das habe ich als erstes versucht. Geht leider so nicht richtig.
Es ist aber bei mir auch etwas komplizierter, da diese Prozedur eine neue Form aufruft. Das geht auch noch, aber nach verlassen dieser Form
wird der Rest der wieder auf der Standardform läuft nicht richtig ausgeführt. Werde aber mal weitersuchen.
Gruß
Gunter
Gruß
Gunter
Hi Gunter,
genau das habe ich als erstes versucht. Geht leider so nicht
richtig.
jede andere Variante ist schlechter.
Es ist aber bei mir auch etwas komplizierter, da diese
Prozedur eine neue Form aufruft. Das geht auch noch, aber nach
verlassen dieser Form
wird der Rest der wieder auf der Standardform läuft nicht
richtig ausgeführt.
Was heißt ‚nicht richtig‘?
Ohne Deinen Code zu sehen, ist ein Kommentar dazu nicht möglich.
Gruß Rainer
Hallo Rainer,
habe das Problem mit einem Timer den ich sowieso schon laufen habe, gelöst:
Sub Form_Load()
Flag = True
End Sub
Sub Timer1_Timer()
If Flag = True Then
Flag = False
Call Command14_Click
End If
End Sub
Besten Dank.
Gruß Gunter
Hallo Gunter,
habe das Problem mit einem Timer den ich sowieso schon laufen
habe, gelöst:
wenn man das anders formuliert heißt es ohne diesen Timer wäre das Problem noch ungelöst. Was machste mit gleichem Problem in einem projekt wo du keinen Timer hast?
Ich sehe diesen Timer als workaround aber bezweifle erstmal daß er nötig ist.
Zeige mal deinen Gesamtcode, naja, zumindest den relevanten
Ich kann mir beim flüchtigen Mitlesen hier nicht vorstellen daß es nicht möglich ist ohne Timer o.ä. beim Laden einer Form dort einen Button „auszulösen“
Gruß
Reinhard
Sub Form_Load()
Flag = True
End SubSub Timer1_Timer()
If Flag = True Then
Flag = False
Call Command14_Click
End If
End SubBesten Dank.
Gruß Gunter
Hi,
habe das Problem mit einem Timer den ich sowieso schon laufen
habe, gelöst:Sub Form_Load()
Flag = True
End SubSub Timer1_Timer()
If Flag = True Then
Flag = False
Call Command14_Click
End If
End Sub
da stimmt etwas nicht, dieser Umweg über einen Timer ist unsauber. Das kann zu Problemen führen.
Die ‚Lösung‘ gefällt mir gar nicht. Du hast das Problem nicht gelöst, nur die Symptome beseitigt.
Gruß Rainer
Ich kann mir beim flüchtigen Mitlesen hier nicht vorstellen
daß es nicht möglich ist ohne Timer o.ä. beim Laden einer Form
dort einen Button „auszulösen“
Hallo Reinhard,
hier das Coding das nicht funktioniert:
Sub Form_Load()
Call Command14_Click
End Sub
Sub Command14_Click()
Form2.Show DoEvents
Call Suche 'Datenbanksuche und Ergebnis in einem Listview
End Sub
’ hier der Event auf der Form2 um diese wieder zu verlassen
Sub Command12_Click()
Unload Form2
End Sub
Danach ist meine Standardform Form1 leer
Gruß
Gunter
Hallo Gunter,
ohne den gesammten Source zu kennen, kann man nur Vermuten. Setzt du einen Timer und führst dann die Sub aus klappt es. Ohne Timer nicht, hmmm…
Ok, deine Form wird geladen. Es tritt das Form_Load Ereignis auf. Dann rufst du aber sofort die Form2 über deine Sub auf und dieser holt die Daten. Beim verlassen stehen nun die Daten bereit aber die Form1 ist nicht fertig geladen… Bei Nutzung eines Timers ist es anders. Du verzögerst dadurch den Aufruf der Sub und die Form1 hat Luft zum laden. Klar das es dann geht.
Abhilfe, schafft es wenn du entweder das Form_Activate in Verbindung mit einer Privaten Variable nutzt. Sprich in der Form
Private Loading as Boolean
Private Sub Form\_Load
loading=true
End Sub
Private Sub Form\_Activate
if Loading then Call Command14\_Click
Loading=false
End Sub
Ist aus dem Kopf geschrieben, sollte dir aber nur zum Verstaendnis dienen. Sollte eigentlich auch klappen
Oder aber …
Du startest dein Project in einem Modul! Lädst dort die Daten und danach die Form1. Wenn sie geladen ist, kannst du dann die Daten da zuweisen, sofern es erforderlich ist
MfG Alex
Hallo,
versuch mal …
Sub Form_Load()
Me.Show
DoEvents
Me.Hide
Call Command14_Click
End SubSub Command14_Click()
Form2.Show, vbModal DoEvents
Call Suche 'Datenbanksuche und Ergebnis in einem Listview
End Sub
Gruß Rainer
Hall Rainer,
wenn man Me.Hide wegläßt, funktioniert es.
Ferner muß bei Form2.show DoEvents bleiben,
bei Form2.show, vbModal gibt es Laufzeitfehler: Typenunverträglichkeit.
Also funktionierender Code:
Sub Form_Load()
Me.Show
DoEvents
Call Command14_Click
End Sub
Sub Command14_Click()
Form2.Show DoEvents
Call Suche 'Datenbanksuche und Ergebnis in einem Listview
End Sub
Ich danke.
Gruß
Gunter
Sub Form_Load()
Me.Show
DoEvents
Me.HideCall Command14_Click
End SubSub Command14_Click()
Form2.Show, vbModal DoEvents
Call Suche 'Datenbanksuche und Ergebnis in einem Listview
End SubGruß Rainer
hallo,
bei Form2.show, vbModal gibt es Laufzeitfehler:
Typenunverträglichkeit.
sorry, ungetestet. Das Komma ist zu viel.
Ich schreib auch immer nur … Form2.Show 1
Öffnest Du die Form nicht modal,
Sub Command14_Click()
Form2.Show DoEvents
Call Suche 'Datenbanksuche und Ergebnis in einem Listview
End Sub
wird ‚Suche‘ ausgeführt, bevor die Form 2 geöffnet wird.
Gruß Rainer
Hallo Rainer,
so funktioniert es nun auch, sehe allerdings keinen Unterschied.
Die Form wird wohl automatisch modal geöffnet.
Die Such wird erst nach verlassen der Form2 ausgeführt.
Nochmals danke.
Gruß
Gunter
sorry, ungetestet. Das Komma ist zu viel.
Ich schreib auch immer nur … Form2.Show 1Öffnest Du die Form nicht modal,
wird ‚Suche‘ ausgeführt, bevor die Form 2 geöffnet wird.
Gruß Rainer
Hallo,
Die Form wird wohl automatisch modal geöffnet.
nein.
Beispiel:
Form1:
Option Explicit
Private Sub Form\_Load()
Me.Show
Form2.Show
Label1.Caption = Form2.Text1.Text
End Sub
Form2:
Option Explicit
Private Sub Form\_Activate()
Text1.Text = "Versuch"
Form2.Hide
End Sub
nach dem Start steht in Form1.Label1: ‚Text1‘.
Ändere ich:
Option Explicit
Private Sub Form\_Load()
Me.Show
Form2.Show 1
Label1.Caption = Form2.Text1.Text
End Sub
Steht nach dem Start im Label ‚Versuch‘.
Der Code wird in einer anderen Reihenfolge abgearbeitet, das ist ein völlig anderes Programm!
Wenn Du jetzt keine Veränderung siehst, liegt das an Deinem Code, den Du uns nicht gezeigt hast. Was der Code tut, sollte Dir trotzdem bewusst sein.
Ach ja, noch etwas.
Du musst die anderen Formen explicit entladen, wenn das Programm beendet wird. Compiliere Dein Projekt mal, starte es und beende es wieder. Dann sieh in den Taskmanager. Dort steht, Dein Programm läuft noch.
Am einfachsten ist in der Startform einzufügen:
Private Sub Form\_QueryUnload(Cancel As Integer, UnloadMode As Integer)
End
End Sub
Gruß Rainer
Hallo Rainer,
werde mich mal mit dem Modalfenster beschäftigen.
Das beenden der Formen hatte ich bereits eingebaut.
Gruß
Gunter