Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
804to808
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Pfeiltasten sollen nicht in UF wirken

Pfeiltasten sollen nicht in UF wirken
03.10.2006 15:58:40
Reinhard
Hallo Wissende,
wenn ich eine Userform (1 Listbox, 1 Labelbox) mit ".Show 0" anzeigen lasse, so wirkt sich das Betätigen der Pfeiltasten auf die Userform aus, genauer gesagt auf die Listbox in ihr aus.
Das möchte ich aber nicht.
Die Pfeiltasten sollen auf die aktive Zelle wirken und diese verändern.
Leider bringt dieser Code:
UserForm1.Show 0
KeinEreignis = True
ActiveCell.Select
KeinEreignis = False
nichts (keinEreignis ist nur boolscher Wert für Worksheet-Ereignisse)
Mir fällt nur ein den Pfeiltasten solange die Uf gezeigt wird ein Makro zuzueisen was das Gewünschte erledigt.
Gibt es keinen direkten Weg?
Danke ^ Gruß
Reinhard

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachtrag
03.10.2006 17:02:49
Reinhard
Hallo,
auch Buchstabeneingaben sollen in die aktive Zelle und nicht in die UF.
Ich habe jetzt den Code geändert zu:
Application.OnKey "{DOWN}", "Pfeil3"
Application.OnKey "{UP}", "Pfeil1"
'Application.OnKey "{LEFT)", "Pfeil2"
Application.OnKey "{RIGHT}", "Pfeil4"
UserForm1.Show 0
KeinEreignis = True
ActiveCell.Select
ActiveCell.Activate
KeinEreignis = False
mit dem Code im Modul:

Sub Pfeil1()
MsgBox "o"
ActiveCell.Offset(-1, 0).Select
End Sub


Sub Pfeil2()
MsgBox "l"
ActiveCell.Offset(0, -1).Select
End Sub


Sub Pfeil3()
MsgBox "u"
ActiveCell.Offset(1, 0).Select
End Sub


Sub Pfeil4()
MsgBox "r"
ActiveCell.Offset(0, 1).Select
End Sub

Leider mit enttäuschendem Ergebnis. Solange die UF sichtbar ist werden die Makros Pfeil1-Pfeil4 nicht ausgeführt:-(
Noch dazu ein anderes Problem aufgetaucht,
Application.OnKey "{LEFT)", "Pfeil2"
löst Fehler 1004 aus.
Gruß
Reinhard
Anzeige
AW: Nachtrag
03.10.2006 18:23:54
Daniel
Hallo
eigentlich ganz einfach:
diesen Code in den Code zur Userform einfügen:

Private Sub UserForm_Activate()
ActiveCell.Select
End Sub

das Userform_Activate_event läuft ab, wenn die Userform gestartet wird.
Gruß, Daniel
AW: Nachtrag
03.10.2006 18:34:00
Reinhard
Hallo Daniel,
bringt leider auch nichts. Der Code steht wie angeraten im UF-Modul.
Gruß
Reinhard
AW: Nachtrag
03.10.2006 19:01:26
daniel
Hallo
also bei mir geht es, wenn ich die Userform über einen STEUERELEMENT-BUTTON des Sheets starte.
Es geht auch, wenn ich das Makro, das die Userform öffnet, über diesen Button aufrufe.
Es geht aber NICHT, wenn ich das gleiche Makro über ein Formular-Feld aufrufe oder die normale Funktion EXTRAS-MAROS-MAKROS
Und wieder stellt sich die Frage an den großen BillyBoy - BUG OR FEATURE?
guckst du beispiel: https://www.herber.de/bbs/user/37155.xls
Gruß, Daniel
Anzeige
AW: Nachtrag
03.10.2006 22:52:28
Reinhard
hallo daniel,
danke dir für deine Mühen.
Ja, Bill würde ich auch gern fragen warum die Datei 1,5 MB hatte, deshalb konnte ich sie vorhin nihct hochladen. Jetzt habe ich sie Blatt für in eine neue Datei kopiert, die UFs ex/importiert und die anderen Codes rüberkopiert und schon nur noch 87 KB :-(
https://www.herber.de/bbs/user/37160.xls
Ich weiß, der Code ist sehr unübersichtlich, ich muss mal klarer mit Select Case in den Ereignissprozeduren aufteilen.
Aber derzeit hänge ich erstmal an anderen problmen fest.
1) Wie überrede ich Excel dass die Pfeiltasten aufs Blatt wirken und nicht auf die UF?
2) Warum gibt es Subs Pfeilx bei LEFT einen 1004 Fehler, während RIGHT, UP, DOWN klappen,?
3) Gelegentlich kommt eine Fehlermeldung wegen "Merker" (Deklariert in einem Modul als Public), ich muss dann
Set Merker=activeCell nochmals durchführen, warum?
4) Ab und zu wird in Spalte D die Auswahl aus der Auswahlliste für C geschrieben, warum?
5) Manchmal ist der oberste Listeneintrag in demr Listbox der UF blau unterlegt manchmal weiß, bei blau geht gar nix auszuwählen, wie erreiche ich dass er immer weiß ist?
Ich weiß, viele Fragen, soll ich sie einzeln reinstellen? *grübel* ...
Gruß
Reinhard
Anzeige
Noch offen o.w.T.
03.10.2006 22:59:22
Reinhard

Gruß Reinhard ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: Nachtrag
04.10.2006 01:54:10
Daniel
Hallo,
der Link tut irgenwie nicht richtig. Ich habe die Datei zwar laden können, aber es war etwas tricky.
zu den Problemen:
- Versuche erst nochmal, das Makro neu strukturiert aufzubauen und laß dabei erstmal die Sicherheitsabfragen weg, dann wird vielleicht einiges klarer.
- laß nicht zuviel über Events-gesteuerte Makros laufen, da verliert man schnell die Übersicht was genau passiert und läuft in irgendwelche Rekursiven Aufrufe rein.
- Mach dich mit der Funktion APPLICATION.ENABLEEVENTS vertraut
- Starte die Userform nicht über Selection_Change, sondern über Before_Doubleclick
dann hat sich der Anwender schon für eine Zeile, die er bearbeiten will entschieden und will die nächste eingabe in der Userform machen. Damit ist dein Pfeiltastenproblem vom Tisch,
- Lass den Anwender alle Eingaben in der Userform machen und schreibe sie gezielt in die Tablle zurück. Damit ersparst du dir viele Sicherheitsaktionen, weil du nach schließen der Userform einfach wieder den Schreibschutz aktivierst
- die Daten sollten erst zurückgeschrieben werden, wenn der Anwender einen OK-Button gedrückt hat.
und zum Merker-Problem: nach einem Programmabbruch oder Veränderungen im Code werden die Variablen zurückgesetz. Bei deinem stark zerstückelten Code mit nicht fest vorgegebenen Ablauf kann es passieren, daß ein Wert von Merker abgefragt wird, bevor Merker überhaupt ein Objekt zugewiesen wurde. Bei Objektvariablen führt sowas zu einem Fehler.
Gruß, Daniel
Anzeige
AW: Nachtrag
04.10.2006 21:47:14
Reinhard
Hallo Daniel,
sorry mit dem Link,
https://www.herber.de/bbs/user/37160.xls klappt besser :-)
zu den Problemen:
- Versuche erst nochmal, das Makro neu strukturiert aufzubauen und laß dabei erstmal die Sicherheitsabfragen weg, dann wird vielleicht einiges klarer.
Okay
- laß nicht zuviel über Events-gesteuerte Makros laufen, da verliert man schnell die Übersicht was genau passiert und läuft in irgendwelche Rekursiven Aufrufe rein.
Wie wahr :-(
- Mach dich mit der Funktion APPLICATION.ENABLEEVENTS vertraut
Hatte ich anfangs, also in Worksheet_Change und Worksheets_selectionChange hatte ich das,
aber trotz application.enableevents=False wurde was ausgeführt, deshalb kam ich auf die Public Variable keinEreignis, damit klappte es besser bzw beherrschbarer.
- Starte die Userform nicht über Selection_Change, sondern über Before_Doubleclick
dann hat sich der Anwender schon für eine Zeile, die er bearbeiten will entschieden und will die nächste eingabe in der Userform machen. Damit ist dein Pfeiltastenproblem vom Tisch,
Trau ich mir zu, aber will ich nicht, wenn Spalte 3 angeklickt wird soll die UF starten (klappt) und alle Eingaben sollen sich auf die Tabelle beziehen , nicht auf die UF (klappt nicht)
- Lass den Anwender alle Eingaben in der Userform machen und schreibe sie gezielt in die Tablle zurück. Damit ersparst du dir viele Sicherheitsaktionen, weil du nach schließen der Userform einfach wieder den Schreibschutz aktivierst
Habe ich letzlich gezwungenermassen gemacht, einen "Übernehmen" Button in die UF eingebaut.
- die Daten sollten erst zurückgeschrieben werden, wenn der Anwender einen OK-Button gedrückt hat.
Ja, siehe Aussage vorher.
und zum Merker-Problem: nach einem Programmabbruch oder Veränderungen im Code werden die Variablen zurückgesetz. Bei deinem stark zerstückelten Code mit nicht fest vorgegebenen Ablauf kann es passieren, daß ein Wert von Merker abgefragt wird, bevor Merker überhaupt ein Objekt zugewiesen wurde. Bei Objektvariablen führt sowas zu einem Fehler.
Ich habe echt nicht begriffen warum da manchmal ne Fehlermeldung kommt und manchmal nicht. Aber Problem umgangen, Merker ist gelöscht, den gibts nicht mehr, habe alles umstrukturiert.
Ich habe jetzt den Code stark reduziert und einen Tick weit übersichtlicher gemacht, damit erledigen sich alte Probleme, aber schwupps sind neue da.
Ich hab einen CommandButton in UF1, bei Click soll UF1 verschwinden und sich UF2 zeigen, leider interessiert UF1 der Befehl
Userform1.Hide
überhaupt nicht, sie bleibt sichtbar :-(
und auch
Userform1.Hide
DoEvents
UserForm2.show
zeigt mir beide UFs, deshlab Frage noch offen...
Gruß
Reinhard
Anzeige
AW: Nachtrag
04.10.2006 23:43:00
Daniel
Hallo
schön das es jetzt besser funkioniert.
Das mit den Userforms, die sich selbst ausblenden und andere einblenden funktioniert prinzipiell bei mir, wo man aber aufpassen muß, ist die gebundene und ungebundene Form.
ich glaube ungebunden ist es am unkompliziertesten.
Aber auch gebunden gehts eigentlich, wenn erst die alte UF ausgelblendet und danach die neue gestartet wird.
Gruß, Daniel
AW: Nachtrag
05.10.2006 22:22:59
Reinhard
Hallo Daniel,
warum die Codereihenfolge
Userform1.Hide
Userform2.show
nicht klappt, also Uf1 bleibt sichtbar, läßt mich verweifeln. Kann doch nicht sein dass ich mir eine API-Funktion aus dem Internet suchen muss die UF1 "abschiesst :-(
Application.EnableEvenst hatte ich vorher, ging auch schief, obwohl in Worksheet_Change und Worksheet_SelectionChange zuallerst Application.EnableEvents=False und am Ende das auf true gesetzt wurde, löste Code in Worksheet_Change trotzdem das Ereignis Worksheet_SelectionCahnge aus und umgekehrt.
Da ich das überhaupt nicht kapierte führte ich die Public variable "KeinEreignis" ein die am Anfang der Ereignis-Codes abgeprüft werden. Damit komme ich besser klar, bin aber nicht ganz zufrieden.
Da , warum auch immer, Excel anderst reagiert als ich denke, habe ich schon als neuen Plan vor, dass wenn ein Ereignis ausgelöst wird, zur Lafzeit der Code des anderen Ereignisses auskommentiert wird und am Ende des Ereigniscodes wieder entauskommentiert wird.
Danke dir nochmals für dein Interesse und deine Bemühungen mir zu helfen.
Ich lasse den Thread hier jetzt auslaufen, außer du hast noch Ideen. Werde mit dem Code weiter experimentieren und dann ggfs einen neuen Beitrag schreiben.
Gruß
Reinhard
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige