[VBA] Makro zum abschließen der Zelleingabe nach Zeit

Phantro

Lt. Junior Grade
Registriert
Apr. 2008
Beiträge
442
Hallo zusammen,

folgendes Problem:
Wir haben in unserer Abteilung eine Exceldatei, welche von mehreren Personen genutzt wird. Allerdings wird immer mal wieder vergessen, die Datei auch mal wieder zu schließen. Da es mit der Erziehung so eine Sache ist, habe ich mir das Makro aus dem zweiten Beitrag eingebaut:
http://www.office-loesung.de/ftopic442760_0_0_asc.php
Somit ist nach einer Zeit x die Datei wieder frei für den Nächsten. Soweit funktioniert es auch wunderbar. Ich bin davon ausgegangen, dass es nicht vorkommen wird, dass Punkt 3: "...indem eine Zelleingabe begonnen, aber nicht (mit Tab oder Enter) abgeschlossen wird, weil im Eingabemodus kein VBA-Code ausgeführt wird" irgendwann eintritt. Tja, scheinbar war ich mir der Sache zu sicher und nun ist es schon mehrfach vorgefallen.

Da ich selbst nicht weiter weiß und auch noch keine Hinweise via Google gefunden habe, frage ich einfach mal hier in die Runde:
Gibt es eine Möglichkeit, während des Eingabemodus nach einer Zeit x die Eingabe zu bestätigen sodass das andere Makro nach Zeit x die Tabelle schließt? Die Aussage aus dem obigen Link bezieht sich auf Office 2007, wir nutzen bei uns Office 2010. Vielleicht wurde hier ja etwas durch MS geändert...

Grüße
Phantro
 
Zuletzt bearbeitet:
Du schreibst ja selbst, dass Makros während einer Eingabe nicht ausgeführt werden können.

Daher wüsste ich jetzt nicht, wie man die Eingabe automatische bestätigen kann.

Wäre es eine Möglichkeit die "Arbeitsmappe freizugeben"?

Dann kann man ja parallel in einer Mappe arbeiten, auch wenn der andere User schläft.
Diese Funktion kann man eben nur unter bestimmten Voraussetzungen nutzen.
 
Die bestimmten Vorraussetzungen werden leider nicht erfüllt :( Die Idee hatte ich schon bevor ich die Idee mit dem Makro hatte. Leider sind dann diverse Dinge nicht mehr möglich.
Wie gesagt, ich habe gehofft, dass die 2010er Version etwas aufgebohrt wurde was die Ausführbarkeit von Makros angeht. Es wäre schön, wenn man einen Timer setzen könnte, der bei ausbleibenden Tastenanschlägen bis x hochläuft und dann in die nächste Zelle hüpft um quasi die vorige Eingabe abzuschließen. Wenn das grundlegend nach wie vor nicht möglich sein sollte, dann muss ich mir irgendwie etwas einfallen lassen... Gledstrafen oder so :-)
 
Du kannst doch mit dem Befehl:
Code:
Application.SendKeys ("{enter}")

Achtung diesen Code habe ich nicht getestet, sondern aus dem Kopf geschrieben.
Ich weiß aber, dass es mit Word ginge.

Deine Zeitschleife kannst du ja noch drum herum bauen.
 
Das mit dem SendKeys ist mir in der Tat neu. Die Funktion klappt auch, allerdings noch nicht so wie ich mir das vorstelle. Ich bin gerade ein bisschen am rumbasteln und überlegen, wie ich die Schleife am sinnvollsten aufbaue. Mal sehen ob ich da was sinnvolles hinbekomme :-) Danke für den Hinweis!
 
Aus dem Bauch heraus zweifele ich daran, dass es klappt.

Es lassen sich Timer-Makros finden, aber die würden stur nach Zeit ›zuschlagen‹.

Aber das Bearbeiten (!) von Zellen dürfte der Spielverderber sein, wie angedeutet wurde. Alle Ereignis-Makros fangen tolle ginge ab, aber nicht wenn ich in einer Zelle anfange zu tippen (wenn ich die per Tastatur annavigiert habe). Einen Trigger der dann einen Timer auslöst sehe ich deswegen nicht.

Einziger Gedanke: ab Activate-Ereignis den Timer anstupsen und ich nach jedem Change-Ereignis neu hochsetzen. Das könnte einem dann aber unter dem Tippen die Mappe wegreißen.

Ist diese Einschätzung im Groben richtig?

CN8
 
Während des Eingabemodus laufen keine Makros. Geht also nicht.
Du musst schon excel dann killen.
 
Was funktionieren könnte, wäre eine Eingabebox als Eingabemodus aufzurufen, anstatt die Zelle zur Bearbeitung freizugeben.
Vom Prinzip her könnte man die direkte Eingabe in Zellen sperren und wenn etwas bearbeitet werden soll, dann nur über ein Makro (welches z.B. über Doppelklick oder so aktiviert wird).
Ich könnte mir vorstellen, dass es da Umsetzungsmöglichkeiten gibt, die funktionieren und mit denen sich noch halbwegs arbeiten lässt.

Je nach Nutzung der Tabelle, kann man auch Eingaben/Änderungen über eine Userform laufen lassen. (Wie bei einer Datenbank GUI).

Womöglich geht hier aber etwas Komfort verloren, und ein normaler User wird das nicht mögen ;)


Alternativ kann man auch den Nutzer irgendwo sichtbar hinschreiben, welcher die Tabelle aktuell nutzt. Dann kann man wenigstens kurz anrufen oder so, um die Blockade leichter aufzuheben.
Ich habe das so gelöst, dass beim Öffnen der Exceldatei eine Textdatei an einen definierten Ort geschrieben wird, welche als Dateinamen den Usernamen enthält.


viele Grüße
 
Ich bin auf deine finale Lösung gespannt, auch wenn ich glaube das diese Art der Arbeit mit Markos ziemlich auf die Ressourcen gehen wird.
 
Moin moin, danke für die weiteren Tipps. Da manche Felder via Copy&Paste gefüllt werden, ist die Idee mit der Eingabebox leider raus.
Ich habe nun auch noch ein bisschen rumgespielt aber es funktioniert leider nicht. Im Grunde hat cumulonimbus8 recht und deckt sich mit der Vermutung von mac4life und der Aussage von engine: Während des Eingabemodus ist eine Makroausführung nicht möglich - leider. Also hat sich seit "damals", als das grundlegende Makro aus dem Link im Post #1 nichts geändert. Sehr schade. Also muss ich es doch irgendwie schaffen die Kolleginnen/Kollegen zu erziehen... Na super =(
 
Zurück
Oben