Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Meldung bei manueller Werteeingabe

Meldung bei manueller Werteeingabe
24.11.2006 13:22:19
lueckii
Hallo Zusammen!
Mir hatte hier im Forum vor nicht allzu langer Zeit jemand folgenden Code geschrieben, der eine Mitteilung bringt, wenn eine Zelle beschrieben wird.

Private Sub Worksheet_Change(ByVal Target As Range)
'A1:K100=Bereich, in den Daten importiert werden
If Not Intersect(Target, Range("A1:K100")) Is Nothing Then
MsgBox "Achtung! Daten werden beim nächsten Import überschrieben.", vbExclamation
End If
End Sub

Allerdings sollte die Meldung nur dann kommen, wenn jemand zum ersten mal in einem bestimmten Bereich etwas eintragen möchte, und das am besten, schon wenn die betreffende Zelle Markiert wird, und nicht erst wenn der Inhalt schon gelöscht ist.
Ist das möglich?
Gruß Martin

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Meldung bei manueller Werteeingabe
24.11.2006 14:04:26
Yal
Hi,
"Change" ist ein Ereignis des Objektes "Worksheet", d.h. durch diese standardisierte Procedurename weisst das Blatt ("Worksheet"), wenn eine ihre Zelle geändert wird ("Change"), diese Procedure durchzuführen ist.
Es gibt leider keine "Worksheet_Select".
Aber diese Procedure kann mit einem "Rückgängig" ergänzt werden.
Ausserdem das "nur einmal Fragen" kann mit eine statische Variable gepeichert werden. In dem Fall, wenn man das Überschreiben schon bestätigt hat.

Private Sub Worksheet_Change(ByVal Target As Range)
Static SchonGefragt As Boolean
If Not SchonGefragt Then
'A1:K100=Bereich, in den Daten importiert werden
If Not Intersect(Target, Range("A1:K100")) Is Nothing Then
If MsgBox("Achtung! Daten werden beim nächsten Import überschrieben." & vbCr & "Trotzdem Werte überschreiben?", vbExclamation + vbYesNo) = vbNo Then
Application.Undo 'Überschreiben der Ursprungwert rückgängig machen
Else
SchonGefragt = True
End If
End If
End If
End Sub

Viel Spass
Yal
Anzeige
AW: Meldung bei manueller Werteeingabe
24.11.2006 14:46:29
lueckii
Vielen Dank!
Das geht bis auf eine Sache, bei der ich wohl auch zu blöd bin.
Wenn ich auf nein klicke, fängt die Prozedur wieder von vorne an, da ich die Zelle mit Undo ja wieder geändert habe. kann man das irgendwie vermeiden
Gruß Martin
AW: Meldung bei manueller Werteeingabe
24.11.2006 16:06:47
Yal
Hallo,
Habe gerade mein "Werk" getestet. Eigentlich dumm von mir: Undo funktioniert nur, wenn es als erste Anweisung einer Funktion steht. Ausserdem löst es selbst das Ereignis "Worksheet_Change"
Dann sehe nur als Lösung das Ereignis "SelectionChange" anstatt "Change" zu verwenden. Dementsprechend die leicht veränderte Version:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static SchonGefragt As Boolean
If Not SchonGefragt Then
If Not Intersect(Target, Range("A1:K100")) Is Nothing Then
SchonGefragt = (MsgBox("Achtung! Eingabe werden beim nächsten Import überschrieben." & vbCr & vbCr & "Weiter darauf hinweisen?", vbExclamation + vbYesNo) = vbNo)
End If
End If
End Sub

Anzeige
AW: Meldung bei manueller Werteeingabe
24.11.2006 14:27:55
Kurt
Hi,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'A1:K100=Bereich, in den Daten importiert werden
If Not Intersect(Target, Range("A1:K100")) Is Nothing Then
If IsEmpty(ActiveCell) Then
MsgBox "Achtung! Daten werden beim nächsten Import überschrieben.", vbExclamation
End If
End If
End Sub

mfg Kurt

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige