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

Zelleneingabe soll fehlermeldung kreiren

Zelleneingabe soll fehlermeldung kreiren
10.10.2022 11:19:57
zouzou
Hallo zusammen
ich probiere, dass wenn jemand im worksheet arbeitet und in der Spalte C und D Angaben dient die ausserhalb gewisser Vorgaben ist in der Zelle #Fehler steht. Es handelt sich bei den Zellen um angaben zu Daten. ausserdem wird die Datei immer grösser da jeder eine neue Zeile anfängt (kann also nicht mit Zeilennummern arbeiten). Jetzt kriege ich bei meinem code immer einen Fehler (Typen unverträglich Fehler 13).
Könnte mir jemand sagen was mit dem Code nicht stimmt/wie ich diesen Fehler beheben kann.
Hier mein Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim size As Integer
Dim i As Integer
size= WorksheetFunction.CountA(Worksheets(2). Columns(1))
i=size
If Target. CountLarge > 1 Or Target.Value = "" Then Exit Sub
If Not Intersect (Target, Range ("C:C, D:D")) Is Nothing Then
If Cells (i,3) = "" Then
ElseIf Cells (i,4) - Cells (i, 3) > 365 Then
Cells (i, 4)="#Fehler!"
ElseIf Cells (1,4)  (Date + 1826) Then
Cells (i,4) = "#Fehler"
ElseIf Cells (i, 3)  (Date + 1461) Then
Cells (i, 3) = "#Fehler"
End if
End if
End Sub

Danke im voraus für eure Antworten

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleneingabe soll fehlermeldung kreiren
10.10.2022 12:49:02
Daniel
Hi
Wahrscheinlich meinst du i = Target.Row wenn die Zeile, in die die Eingabe erfolgt ist.
Target.Value = "" erzeugt einen Fehler, wenn Target mehr als eine Zelle umfasst.
Du hast diese Prüfung auf eine Zelle zwar drin, aber kombiniert mit der anderen Prüfung, dh. die andere Prüfung wird auch immer berechnet und damit ist der der Fehler nicht aus geschlossen.
Du musst beide Prüfungen getrennt, in der richtigen Reihenfolge und möglichst am Anfang ausführen:

If Target.CountLarge > 1 then Exit Sub
If Target.Value = "" then Exit Sub
Gruß Daniel
Anzeige
AW: Zelleneingabe soll fehlermeldung kreiren
10.10.2022 12:58:36
ralf_b
Cells (i, 4)="#Fehler!" so eine Zuweisung löst auch ein Change event aus und dann will dein Code damit Rechenoperationen ausführen. Könnte den Typkonflikt erklären. Verwende Application.enableevents = false vor solchen Zuweisungen.
ups, das war für den TE owt
10.10.2022 13:00:03
ralf_b
AW: ups, das war für den TE owt
10.10.2022 13:43:32
Daniel
macht nix.
man antwortet intuitiv gerne mal auf den Beitrag, der direkt über dem Antwortfeld steht, welches hier aber der falsche ist.
Eine Schwäche im Design dieses Forums.
Gruß Daniel
Ich liebe die Schwäche dieses Forums ;-)
10.10.2022 23:25:28
Yal
wenn man beachtet, dass Hans quasi allein das gesamte betreibt, können wir natürlich nicht Google-Power erwarten.
Ein Oskar für sein Lebenswerk!
VG
Yal
Anzeige
AW: Zelleneingabe soll fehlermeldung kreiren
10.10.2022 23:40:11
Yal
Hallo Zou^2,
es scheint leichter, wenn man die Fälle "Spalte 3" und "Spalte 4" getrennt behandelt.
Achte auf ein sauberes Einrücken. Das A&O um ein lesbaren und damit weniger fehlerhaften Code zu schreiben.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.CountLarge > 1 Or Target.Value = "" Then Exit Sub
If Target.Column = 3 Then
Select Case Target.Value
Case Is  (Date + 1461): Target = Error()
End Select
ElseIf Target.Column = 4 Then
Select Case Target.Value
Case Is > (Target.Offset(0, -1) + 365): Target = Error()
Case Is  (Date + 1826): Target = Error()
End Select
End If
Application.EnableEvents = True
End Sub
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige