Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
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
Inhaltsverzeichnis

Betätigung eines Makrobuttons während man noch Zel

Betätigung eines Makrobuttons während man noch Zel
26.09.2015 15:20:56
Peter
Hallo Leute,
habe dies bereits in zwei anderen Foren gepostet aber leider keine Antworten erhalten ...
Ich habe da diese Excel xlsm Arbeitsmappe, die mit mehreren Makros versehen ist.
Unter anderem frage ich bei einem Sheet 'X' ab, ob es gerade verändert wurde:
Private Sub Worksheet_Change(ByVal Target As Range)

Auf diesem Sheet 'X' wiederum gibt es einen Formularsteuerelementebutton 'Exit'.
Wenn gedrückt und etwas auf der Seite verändert worden ist (ich setze ein internes Flag bei jeder erkannten Änderung), frage ich nach, ob die Änderungen gespeichert werden sollen, speichere dementsprechend ggf., lösche die Eingabefelder wieder, springe auf eine andere Seite und verstecke dieses Sheet 'X' (wieder) (xlSheetVeryHidden).
Klappt soweit so gut.
Mein Problem beginnt dann, wenn jemand gerade etwas in eine Zelle auf Sheet 'X' schreibt und - ohne eine andere Zelle anzuklicken - quasi live aus dem Editiermodus in dem er noch ist auf den Exit-Button klickt.
1. wird >jetztnicht 2. >nach Da die Seite jetzt versteckt ist (und alle Felder dort von mir bei Exit gelöscht wurden) kommt es zu einer Fehlermeldung, weil mein Worksheet_Change - Code nichts mehr findet (alle Felder leer).
Meine Fragen sind:
- Kann man irgendwie in VBA erkennen, dass gerade eine Zelle bearbeitet wird?
- Kann man per VBA diesen Modus ggf. verlassen (und damit auch das Change-Ereignis gleich auslösen)?
- Wenn nicht, was sonst könnte ich tun?
Ist ein seltsames Problem. Kommt selten vor, da die Bediener meistens vor dem Verlassen woanders hinklicken..
Aber wenn, könnte ich zwar den Fehler unterdrücken, die Eingabe in dieser Zelle wäre aber verloren gegangen.
Weiß jemand Rat?
Eine Beispieldatei findet ihr hier: https://www.herber.de/bbs/user/100407.xlsm

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ActiveX
26.09.2015 16:04:51
RPP63
Hi!
Nimm statt einem FormSteuerelement einen ActiveX-Button und weise ihm folgenden Code zu:
Private Sub CommandButton1_Click()
Call btnExitForm_Click
End Sub
Durch Anklicken wird der Editiermodus zwangsweise beendet.
Gruß Ralf

AW: ActiveX
26.09.2015 17:58:56
Peter
Hallo Ralf,
wow! Ist das so?
Das erklärt auch, warum ich das Auftreten dieses Problems vorher nie bemerkt hatte! Ich hatte früher NUR ActiveX-Elemente verwendet - u. a. weil die viel vielfältiger zu formatieren sind.
BIS im Dezember Microsoft diese unsäglichen ActiveX Security-Updates verteilt hatte.
Ich konnte dieses Workbook nicht mehr zum Laufen bringen, bis ich alle Elemente in den Sheets durch Formularelemente ersetzt hatte UND alle Verknüpfungen von Feldern in Userforms mit Zellen in Sheets entfernt hatte. Ein major Aufwand!!
Jetzt bin ich in einer Zwickmühle. Vielleicht funktioniert ja meine Mappe noch, wenn ich wieder (nur) dieses eine Element in ActiveX ausführe - wohl ist mir dabei aber nicht!
Office-Profis unserer Firma rieten mir vehement ab, jemals wieder ActiveX-Elemente zu verwenden! MS unterstütze das nicht wirklich und richtig ...
Aber ich werde mir das zumindest mal ansehen!
Danke für den Tipp,
Peter

Anzeige
AW: ActiveX
26.09.2015 18:45:24
Daniel
HI
wenn du beim Formularsteuerelement bleiben willst, dann könntest du folgenden Workaround verwenden, um festzustellen, ob der Anwender eine Änderung gemacht hat oder nicht:
1. setze die Eigenschaft: ThisWorkbook.Saved = True bevor der Anwender im Feld die Eingaben machen kann.
2. prüfe im Makro des Buttons dann, ob diese Eigenschaft immer noch den Wert WAHR oder wieder FALSCH hat.
die .Saved-Eigenschaft ist dafür verantwortlich, ob beim Schliessen der Datei die automatische Rückfrage zum Speichern erfolgt.
das .Saved schon auf False gesetzt sobald er Anwender in die Zelle zum Bearbeiten klickt und somit kannst du diese Eigenschaft verwenden.
Gruss Daniel

Anzeige
AW: ActiveX
27.09.2015 10:58:11
Peter
Hey Daniel,
du bist echt kreativ - DAS hätte ich nicht erwartet / versucht!
Klingt für mich eigentlich auch unlogisch, dass, weil die Bearbeitung einer Zelle noch nicht 'abgeschickt' ist zwar das Change-Event noch nicht ausgelöst wird ABER die ThisWorkbook.Saved-Eigenschaft trotzdem bereits auf FALSE gesetzt wird - ABER SO IST ES!
Genau was ich suche - dies löst mein Problem!!
Muchas Gracias!

AW: ActiveX
27.09.2015 11:10:20
Peter
Hey Daniel,
OK kleine Korrektur - löst 90%.
Leider setzt Excel das ThisWorkbook.Saved Flag auch, wenn man nur mit F2 in den Editiermodus wechselt - also auch ohne etwas geändert zu haben.
Trotzdem - ich kann damit leben, dass das Programm nun in diesen seltenen Fällen (überflüssiger Weise) fragt, ob die Daten zurückgeschrieben werden sollen...
Gruss, Peter
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige