Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1144to1148
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

Hilfe bei Worksheet_Change-Funktion

Hilfe bei Worksheet_Change-Funktion
Richard
Hallo Leute,
ich habe da ein kleines Problem, das ich nicht mehr bewältigt kriege. Aber seht euch doch zuerst bitte einmal folgenden Code an, danach erkläre ich was ich vorhabe.
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case "$E$10"
If Not Len(Target.Value) = 13 Then
With Target
.Interior.ColorIndex = 22					'dann ROT
.Font.ColorIndex = 9
End With
Target.Offset(0, 0).Select					'im Feld bleiben
Else
With Target
.Interior.ColorIndex = 35					'dann GRÜN
.Font.ColorIndex = 10
End With
Target.Offset(4, 0).Select					'zum nächsten Feld springen
End If
Case "$E$14"
If Target.Value > 10000 Then
With Target
.Interior.ColorIndex = 22					'dann ROT
.Font.ColorIndex = 9
End With
Target.Offset(0, 0).Select					'im Feld bleiben
Else
With Target
.Interior.ColorIndex = 35					'dann GRÜN
.Font.ColorIndex = 10
End With
Target.Offset(6, 0).Select					'zum nächsten Feld springen
End If
Case "$E$20"
End Select
End Sub

Es geht hierbei um eine Art Formular, wo die auszufüllenden Felder bestimmte Bedingungen erfüllen müssen, damit die eingegebenen Daten anschließend weiterverarbeitet werden können. Ich habe meine beiden Beispiele sehr leicht gemacht, damit es jedem verständlich ist, aber die tatsächlichen Bedingungen sind viel komplexer. Ist eine Bedingung erfüllt wird das Feld grün hinterlegt und mit "Target.Offset" ins nächste Feld gesprungen. Ist die Bedingung nicht erfüllt, dann bleibt das Feld weiterhin aktiv/selektiert und hinterlegt sich rot, damit jeder weiß, "Aha, hier stimmt was nicht!"
Das Problem hierbei ist nun, dass man unbedingt erst in den Bearbeitungsmodus der Zelle gehen muss, damit die Bedingung abgecheckt werden kann und damit "Target.Offset" funktioniert. Ich möchte jedoch auch dann diese Überprüfung eingebaut haben, wenn man mit Enter, Tab oder den Cursor-Tasten das Feld verlässt ohne, dass es vorher bearbeitet wurde.
Ich hoffe, ich habe mich deutlich und verständlich ausgedrückt.
Mit Freundlichen Grüßen
Richard E.

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

Betreff
Benutzer
Anzeige
Gültigkeit & bed. Formatierung ?
08.03.2010 15:00:32
Renee
Hi Richard,
Dazu müsste man schon wissen, wie den diese sog. aber die tatsächlichen Bedingungen sind viel komplexer wirklich sind.
Lassen sich diese z.B. mit Gültigkeits-Regeln & damit auch mit bedingten Formatierungen beschreiben, so wird VBA vielleich komplett überflüssig!
GreetZ Renée
AW: Gültigkeit & bed. Formatierung ?
08.03.2010 15:15:42
Richard
Hallo Renée,
Erstens: Kann man nicht, da hinter einigen Bedingungen Msgbox-Abfragen sind, die die Bedingung abändern lassen. Zum Beispiel: Unsere Artikelnummer hat immer 8 Stellen und beginnt mit einer "1". (Bedingung Nr. 1)
Alle Artikelnummern werden sukzessiv angelegt und die 3. Stelle war immer, schon bei 1200 Artikelnummern eine "0", doch jetzt aufeinmal kommt ein Artikel der an der Stelle eine "2" stehen hat.
Dem Benutzer wird mit einer MsgBox gefragt, ob die "2" richtig ist oder ob es sich doch um einen Tippfehler handelt, und zwar ob die "0" doch richtiger ist. (abänderbare Bedingung Nr. 2)
Die letzte Stelle ist in der Regel zu 98% eine Zahl, kann aber auch ab und zu ein Buchstabe sein und zwar nur die Buchstaben "M", "X", und "L". (Bedingung Nr. 3)
Zweitens: Ich mag VBA lieber als reine Excel-Funktionen.
Mit freundlichen Grüßen
Richard E.
Anzeige
Vorschlag ScrollArea ...
08.03.2010 15:24:38
Matthias
Hallo
so könnte es auch klappen:
Da kann man mit Enter, Tab oder den Cursor-Tasten das Feld nicht verlassen.
Case "$E$10"
If Not Len(Target.Value) = 13 Then
With Target
.Interior.ColorIndex = 22     'dann ROT
.Font.ColorIndex = 9
ActiveSheet.ScrollArea = Target.AddressLocal 'Zelle kann nicht verlassen werden

End With
'Target.Offset(0, 0).Select     'im Feld bleiben - wäre dann nicht nötig
Else
With Target
.Interior.ColorIndex = 35     'dann GRÜN
.Font.ColorIndex = 10
ActiveSheet.ScrollArea = "" 'Zelle kann wieder verlassen werden
End With
Target.Offset(4, 0).Select     'zum nächsten Feld springen
End If

Gruß Matthias
Anzeige
Na dann, viel Glück & Vergnügen (owT)
08.03.2010 16:01:13
Renee

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige