Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
328to332
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
328to332
328to332
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Falsche Eingabe Gültigkeitsbereich abfangen

Falsche Eingabe Gültigkeitsbereich abfangen
27.10.2003 15:44:07
Guido Palacios
Hallo,

hab noch immer das Problem das bei einer falsch eingabe eines Wertes in einem G-Bereich und anschliessender richtig eingabe das Change-Ereignis 3x Rekursiv aufgerufen wird. Habs mit Flags soweit hingekriegt.. allerdings wie in dem Artikel den ChrisL mir geschickt hat...
http://xlforum.herber.de/messages/327769.html
...kann ich ja auch 2x hintereinander einen falschen Wert eingeben der mir den 5x einen rekursiven aufruf verursacht!

Gibt es eine Möglichkeit schon bei der 1. Falsch eingabe zu reagieren???
Erhalte die Fehlermeldung (Eingabe ist nicht Element des G-Bereichs) nämlich bevor ich überhaupt nur in die nähe des Debug-Modus gelange, auch wenn ich keine Meldung angebe (vermute Excel-Std-Meldung)

Jemand eine Idee??

@ChrisL
Hab das nicht ganz geblickt "im Change abfangen"...?!

grüße
Guido P.

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

Betreff
Datum
Anwender
Anzeige
AW: Falsche Eingabe Gültigkeitsbereich abfangen
27.10.2003 16:21:44
ChrisL
Hi Guido

Du drehst dich im Kreise. Akzeptiere dass du die Gültigkeitsprüfung im Change Ereignis machen musst. Wenn du mir sagst, was für eine Gültigkeitsprüfung du vornimmst und auf welchen Bereich schreibe ich Dir was. So kompliziert kanns nicht sein.

Gruss
Chris

This message contains 78% recycled characters.
AW: Falsche Eingabe Gültigkeitsbereich abfangen
27.10.2003 16:53:16
Guido Palacios
Hi Chriss nochmal!

Vorab erstmal Danke für dein Bemühen!

Meine Situtation:
Habe eine excel Datei die als Aufgabenplanung dient!
Meine Afg war dieses Sheet so zu erweitern das bei auswahl eines 'Bearbeiter' aus dem G-Bereich (Spalte Q enthält Kürzel der MA's) automatisch die aktuelle Zeile in einem Array gespeichert wird und beim Beenden als Email versendet wird!! <-- klappt alles wunderbar.

Ich aktualisiere den G-Bereich (Target.Validation) bei jedem click auf eine Zelle in dieser Spalte Q (Selection_Change) und merke mir auch gleich das Value (zum Vergleich ob alt.value = neu.value ist).

Gebe ich 1x GP ein passts, geb ich nochmal GP ein erscheint von mir eine Box mit der Info das "an diesen Bearbeiter bereits eine Email generiert wurde".. <-- so auch gewollt!

Jetzt gebe ich einen falschen Wert ein und drücke Enter --> es kommt sofort die Meldung das ein ungültiges Element ausgewählt wurde! Ich habe keine Chance diese Meldung abzufangen...
Wie in dem Thread bereits beschrieben bei der 1. FalschEingabe 3 Rekursive Aufrufe bei 2 FalschEingaben 5 RekAufrufe...

OK soweit sogut. Gebe also 1x falsch ein und danach richtig (aber nicht wieder gp) dann wirds beim 1. Durchlauf richtig gespeichert --> dann kommt die Rekursion --> es wird geprüft ob alter Wert gleich neuer ist und da beim 1. mal alles geklappt hat läufts dann nat. jetzt auf den Fehler das bereits an diesen Bearbeiter versendet wurde!

Ich hatte die Lösung fast schon programmiert, in dem ich nach der Ausgabe, 'das bereits...', eine Flag setz wo ich dann abfangen kann wenns Rekursiv wird.. allerdings nicht wenn ich 2x was falsches eingebe, dann hab ich ja 5 aufrufe und mein Flag ist längst wieder zurückgesetzt wo er noch am RekursionAbarbeiten ist...

Wow, das war jetzt aber ein Text...
Ich hoffe ich hab mich einigermaßen Verständlich ausgedrückt!

Mit 'was für eine Gültigkeitsprüfung auf welchen Bereich' gemeint ist versteh ich glaub ich nicht so ganz. Vielleicht erklärt dies nachfolgender Code....
...Meinen GBereich bastel ich wie folgt zusammen:

Selection_Change
if target.column = blabla then
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=GBereich
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Zelle gesperrt"
.InputMessage = ""
.ErrorMessage = "Zelle ist gesperrt, bitte selektieren sie ein Element aus der Auswahlliste!"
.ShowInput = True
.ShowError = True
End With
end sub

Grüße
Guido P.

P.S: Ich bin echt am Verzweifeln und will endlich FEIERABEND!!!
Anzeige
AW: Falsche Eingabe Gültigkeitsbereich abfangen
27.10.2003 17:41:27
ChrisL
Hi Guido

Langsam verstehe ich in welche Richtung dass es geht, aber so ganz habe ich den Überblick noch nicht. Insbesondere wie es mit deinem G-Bereich genau läuft. Ist dies eine definierter Name, Spalte G oder was genau verstehst du darunter.

Angenommen die Liste kommt aus dem Tabellenbereich sagen wir B1:B3

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 1 Then
If WorksheetFunction.CountIf(Range("B1:B3"), Target) = 0 Then
MsgBox "Zelle ist gesperrt, bitte selektieren sie ein Element aus der Auswahlliste!", vbCritical
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Exit Sub
End If
End If
End Sub


Dabei entfernst du in der Gültigkeit die automatische Fehlermeldung bei einer fehlerhaften Eingabe. Die Gültigkeitsprüfung wird also direkt im Worksheet_Change Ereignis ausgeführt.

Gruss
Chris
Anzeige
AW: Falsche Eingabe Gültigkeitsbereich abfangen
28.10.2003 09:53:03
Guido Palacios
Hi Chris,

hmm, habs grade eingefügt... Wie's aussieht bist du mein neuer Held!!!
Fätten Dank, nachdem ich '.showerror = false' gesetzt hatte kam ich in deine Beschriebene Routine....

Chris, bin dir wirklich zutiefstem Dank verplichtet, jetzt kann ich endlich eine Rauchen gehen... *g

Grüße, bis zum nächsten Prob!

Thx
Guido P.
Danke für die Rückmeldung
28.10.2003 10:30:52
ChrisL
Hi Guido alias Hans ab-dampf im Raucherloch ;-)

Gern geschehen.

Gruss
Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige