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

Fehler im Code ich komme nicht weiter

Fehler im Code ich komme nicht weiter
28.08.2018 11:37:23
Fred
Hallo zusammen
Da ich mit meiner Tabelle einfach nicht weiter komme muss ich leider noch mal ein altes Thema von mir hier reinstellen. Ich habe zwar versucht alle Informationen aus dem alten Beitrag Umzusetzen ,aber ich verstehe den Wink mit dem Zaunpfahl einfach nicht.
Ich bekomme es nicht hin das die Autoform das richtige Datum zugewiesen bekommt und es dann auch richtig anzeigt.Ich gebe das Datum über eine Userform ein und die Autoform sollte sich dann Färben nach Bedingung. Leider wird das Datum schon nicht richtig in der Form angezeigt . Ich finde einfach den Fehler nicht.Deshalb noch mal die geänderte Mappe von mir und die Fehlermeldung.
Es wäre schön wenn mir jemand auf die Spünge helfen könnte.
Vielen Dank schon mal im Vorraus.
Fred
Userbild
Userbild
https://www.herber.de/bbs/user/123611.xls

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler im Code ich komme nicht weiter
28.08.2018 11:57:51
Peter
Hallo Fred,
prüfe doch mal ob in der ActiveCell auch ein Datum drinsteht.
Wenn in der Taballe eine Cell aktive ist in der z.B. ein Text steht kommt diese fehlermeldung.
Viele Grüße
Peter (hpo)
AW: Fehler im Code ich komme nicht weiter
28.08.2018 12:10:04
EtoPHG
Hallo,
Dein Fehler.
Beispieldatei: Deine Activecell ist P4. Egal was du in der Userform nach AQW-Auswahl stehen hast. Du nimmst den Wert aus P4 und diese Zelle ist leer! IMHO solltest du den Wert aus den Textboxen nehmen, aber dazu ist mir die Funktion der Userform und der Code zu undurchsichtig.
Gruess Hansueli
AW: Fehler im Code ich komme nicht weiter
28.08.2018 14:10:11
Fred
Hallo Hansueli und Peter (hpo)
Vielen Dank für Eure Antworten. Ihr habt Recht, jetzt sehe ich das auch ,eigendlich werden die Werte der TextBox1 der Userform in der Spalte AF gesucht und die Werte der TextBox2 und 3 dann aus AG und AH.Nur das Selektionsereigniss wird wohl nicht auf die Spalte gesetzt. Hmm Naja da muss ich mal schaun denn ich habe den Code auch selber nicht geschrieben sondern nur zurech gefrickelt da ich leider im VBA ziemlich Unbedarft bin.
Grüße Fred
Anzeige
AW: Fehler im Code ich komme nicht weiter
28.08.2018 15:11:54
Matthias
Moin!
Also arbeite an Stelle von ActiveCell mit Target. DAmit hast du gleich die geänderte Zelle. Am Anfang noch die Spalte prüfen, damit du auch die hast, mit einem Datum. Das würde dann so aussehen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Current_Date As Date
Dim Date_String As String
If Target.Column  33 And Target.Column  34 Then Exit Sub
Date_String = Target.Value
Current_Date = CDate(Date_String)
Target.Value = Current_Date
If Target.Address = "$AG$1" Then
With Worksheets("AQW´s").Shapes("Oval 30").Fill.ForeColor
Select Case Target
Case Is >= (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is = (Current_Date)
.RGB = RGB(0, 250, 0) 'grün
Case Is 

ggf. kann man auch die Prüfung unten zusammen fassen und in eine Schleife packen aber da sind bei AH die Shape 1 bis 3 nicht ein einer Reihe.
VG
Anzeige
AW: Fehler im Code ich komme nicht weiter
28.08.2018 16:43:24
Fred
Hallo Matthias und Hans
Vielen Dank für Eure schnelle Antworten. Den Code von Matthias habe ich schon umgesetzt und er läuft auch echt gut. Was noch nicht funktioniert ist das sich das Oval auch Färbt wenn die zeitspanne abgelaufen ist. Zur Ansicht habe ich noch mal die aktuelle mappe hochgeladen.
https://www.herber.de/bbs/user/123620.xls
Den Code von Hans muss ich erst noch testen bin ich noch nicht zu gekommen.
Grüße Fred
AW: Fehler im Code ich komme nicht weiter
28.08.2018 20:19:19
Matthias
Moin!
Ich habe mir den Code nochmal angeschaut und ein paar Fragen. Bei den unteren Walzen im Change Event wird zum Teil -80 bzw. - 60 genommen. Bei den meisten ist dort aber -30 bzw. -40 in Rechnung. Was stimmt den nun? Und im oberen Teil ist es manchmal umgekehrt! Ist das so gewollt.
Und der Vergleich geschieht mit dem aktuellen Datum oder?
Kannst du das nochmal erklären - das ist im Vergleich zur Legende etwas komisch. Will den Code zusammenfassen - der ist so nicht wartbar. :-)
VG
Anzeige
AW: Fehler im Code ich komme nicht weiter
28.08.2018 20:49:16
Matthias
Moin nochmal!
Also bzgl. der Daten solltest du beim Eintragen in das Blatt noch cdate() jeweils davorsetzen. DAnn wird es im Blatt auch als Datum eingetragen. Zuletzt war es nur als Text und wird dann vom Programm nicht als Datum erkannt.
HIer mal eine geänderte Beispieldatei - aber Achtung bin mir bei den Farben und Zeitabständen nicht sicher. Habe die Zeit mal rückwirkend genommen um zu testen, ob man noch in der Zeit ist (also ob der Termin nicht 80 Tage vor jetzt liegt). Ansonsten habe ich 3 der Shapes getauscht, damit die Reihenfolge stimmt. Das mit dem CDate beim Eintragen aus der USerform ist auch drin. Und dann habe ich das CHange mal gekürzt und geändert. Teste mal, ob das so wie gewollt arbeitet. Wie geschrieben, bei der Zeit kann es auch sein, dass es anders gemeint war, das kann man noch ändern. Musste mit den Daten spielen, die sind also nicht mehr wie zum Anfang.
https://www.herber.de/bbs/user/123625.xls
VG
Anzeige
AW: Fehler im Code ich komme nicht weiter
29.08.2018 13:47:52
Fred
Hallo Matthias
Vielen Dank es funktioniert jetzt prima, so wie es soll.
Das hätte ich so alleine nie hin bekommen.
Grüße Fred
AW: Fehler im Code ich komme nicht weiter
28.08.2018 15:18:26
Hans
Hallo Fred
ich habe mir die Beispieldatei angesehen und ein paar Dinge geaendert. Bitte selbst prüfen ob das so richtig ist?
Bei Target ist zu berücksichtigen das man den Datumswert aus der TargetZelle laden muss, nicht aus ActiveZell.
ActiveZell ist die Zelle, wo der Cursor - nach der "Verschiebung" nach Rechts steht!!
Die Dim Anweisung habe ich auf "AS Date" geaendert, Datum in String Variable laden ist problematisch!
Im Code habe ich Application.EventDo = False eingebaut, der IMMER zurückgesetzt werden muss!!
Die Eingabe per Makro in die Nachbarzelle ist ja auch eine neue Eingabe, Ruft das Makro wieder auf!!
Um das zu verhindern mit EventDo = False abschalten - mit True IMMER einschalten, sonst ist das Makro Tot!
(Im Fehlerfall Datei schliessen, speichern, und neu starten!)
Ich setzte nicht mit AktiveCell sondern Target.Select auf die Eingabe Zelle zurück!
Vergiss bitte nicht den Fehlerteil "evon:" - vor End Sub zu kopieren! Ist wichtig!!
Ich hoffe der Code hilft weiter. Wenn ja Thread bitte schliessen, kein Haeckchen mehr setzen.
mfg Hans
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Current_Date As Date   '** war String
Dim Date_String As Date
'Aussprung beim löschen  mehrerer Zellen!!
If Target.Columns.Count > 1 Then Exit Sub
'Bei Eingaben vor Spalte AG Pgroamm Ende
If Target.Columns  0 Then
MsgBox "ungültige Eingabe"
Target.Select:  GoTo evon
End If
On Error GoTo evon  'Event ON!!
Application.EnableEvents = False
Current_Date = CDate(Date_String)
ActiveCell.Value = Current_Date
'Cursor auf EingabeZelle zurücksetzen!!
Target.Select
'** diesen Teil unbedingt -VOR- End Sub setzen
evon:   'Events immer On setzen!!
Application.EnableEvents = True
End Sub

Anzeige
AW: Fehler im Code ich komme nicht weiter
28.08.2018 15:38:34
Hans
Hallo Fred
ich habe gerade im Thread gesehen das ich die öglichkeit Target.Value = "" übersehen habe und etwas nicht klappt.
Hier noch mal ein geaenderter Code der klappen müsste.
mfg Hans
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Current_Date As Date   '** war String
Dim Date_String As Date
'Aussprung beim löschen  mehrerer Zellen!!
If Target.Columns.Count > 1 Then Exit Sub
On Error Resume Next
Date_String = Target.Value  'war ActiveCell
If Target.Value = Empty Then Target.Select: Exit Sub
'Abbruch bei ungültiger Eingabe
If Err > 0 Then
MsgBox "ungültige Eingabe"
Target.Select:  GoTo evon
End If
On Error GoTo evon  'Event ON!!
Application.EnableEvents = False
Current_Date = CDate(Date_String)
ActiveCell.Value = Current_Date
'Cursor auf EingabeZelle zurücksetzen!!
Target.Select

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige