Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Hi Günther!
Code: Weekday(startDatum, [vbSunday])
hab ich so auch noch nicht gesehen.
Einigen wir uns darauf, dass es zwar funktioniert, aber "doppelt gemoppelt" ist?
Einen internen xlKonstantenwert (hier vbSunday = 1) zunächst zu evaluieren … :05:
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 07.04.2016
Version(en): XP Pro 2002
Uff, erst mal vielen Dank für die erklärenden Worte.
Ich habe vorhin auch gemerkt, daß ich ja noch ein drittes Makro brauche. Unz zwar soll das ausgeführt werden, wenn ich einen beliebigen Wert in mein Feld H3 eingebe. Eigentlich soll dann ja schon das Datum auf den nächsten Freitag korrigiert werden und nicht erst, wenn ich die Befehlsschaltfläche mit den Pfeilen clicke.
Werde aber vor heute Abend nicht dazu kommen.
Ich melde mich dann wieder, wenns Probleme gibt.
Gruß aus Teneriffa.
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
@ Ralf:
... der Wille zur Einigung ist immer vorhanden!
Das Ganze war etwas aus der Historie des Threads heraus, ich möchte auch nicht all zu viel am erarbeiteten Code ändern. Das erfahrene Profis da eine andere Lösung finden, ist klar. Aber wenn ich mich an meine ersten Gehversuche mit VBA erinnere ... :22:
Beste Grüße
Günther
Excel-ist-sexy.de …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 07.04.2016
Version(en): XP Pro 2002
Hallo, hier bin ich wieder.
Ich hab jetzt mein drittes Makro geschrieben, welches mir auf den kommenden Freitag springt, wenn ich ein beliebiges Datum eingebe.
Funktioniert eigentlich ganz gut. - und jetzt zu dem eigentlich. Das ganze Konstrukt funktioniert nur, wenn ich mir meinen Wert für Startdatum nicht in dem Feld H3 anzeigen lasse - tue ich dies, so läuft es irgendwie in einer Schleife und Excel hängt sich auf.
Nehme ich den Befehl Range("H3") = startDatum heraus, läuft es prächtig, bloss wird mir das nächste Datum (Freitag) erst angezeigt , wenn ich auf eine Schaltflächen clicke. Etwas unschön.
Hat dafür einer eine Lösung parat.
Code: Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'Datum in H3 auf Freitag setzen
Dim heuteDatum As Date
Dim startDatum As Date
Dim nullDatum As Date
Dim WT As Integer
If Intersect(Target, Range("H3")) Is Nothing Then Exit Sub
heuteDatum = Range("M1").Value
startDatum = Range("H3").Value
If startDatum < nullDatum Then startDatum = nullDatum
If startDatum > heuteDatum Then startDatum = heuteDatum
Range("H3").Value = Range("H3").Value + 6 - Range("H3").Value Mod 7
WT = Weekday(startDatum, [vbSunday])
Range("J3") = WT
Range("H3") = startDatum
End Sub
Registriert seit: 11.04.2014
Version(en): Office 2007
03.05.2016, 05:59
(Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2016, 06:00 von Steffl.)
Hallo,
du mußt die Ereignisse ausschalten
Code: Application.EnableEvents = False
Range("H3") = startDatum
Application.EnableEvents = True
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 13.04.2014
Version(en): 365, 2019
Hallo,
um ein eingegebenes Datum auf den nächsten Freitag zu korrigieren reicht eigentlich das:
Code: Private Sub Worksheet_Change(ByVal Target As Range)
'Datum in H3 auf Freitag setzen
Dim WT As Integer
If Intersect(Target, Range("H3")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Range("h3") Mod 7 <> 6 Then Range("h3") = Range("H3") + 6 - Range("h3") Mod 7
Range("J3") = Format(Range("h3") Mod 7, "ddd")
Application.EnableEvents = True
End Sub
In dem letzten Makro gibt es sowieso ein paar Ungereimtheiten:
1. ist NullDatum nirgendwo festgelegt, wäre also im Code =0
2. Value benötigt man hier nirgends.
3. wenn HeuteDatum das aktuelle Datum sein soll, dann wird das auch durch Date dargestellt.
4. H3 wird am Ende wieder auf das StartDatum gesetzt, was, weil das NullDatum fehlt, dazu führt, das am Datum nichts geändert wird. Wwarum also das ganze Makro???
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 07.04.2016
Version(en): XP Pro 2002
Super, genauso soll es funktionieren.
Dank an alle, die mir geholfen haben und wem die Programmierung noch ein bißchen holprig erschien, der sollte bedenken, daß ich erst vor ein paar Wochen mit VBA angefangen habe.
Gruß :43: :43: :43:
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
03.05.2016, 09:38
(Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2016, 09:39 von Käpt'n Blaubär.)
Hallo,
Zitat:... und wem die Programmierung noch ein bißchen holprig erschien, der sollte bedenken, daß ich erst vor ein paar Wochen mit VBA angefangen habe.
dazu kann ich nur sagen, wehret den Anfängen, denn nichts ist beständiger als das Provisorium.
Ich weiß sehr wohl ein Klagelied mit mehreren Strophen darüber zu singen.
Beispiel:
Ich habe mich in meiner Anfangszeit der VBA-Programmierung einen feuchten Dreck darum gekümmert,
daß mir in den Foren wieder und wieder gesagt wurde: " ...laß' das .Acitivate und das .Select weg".
Ich antwortete damals ständig, für mich ist es wichtiger, das Programm zum Laufen zu kriegen.
Um den Schmuck am Nachthemd kümmere ich mich später. In einem meiner größeren Projekte
wurden die Makros dann fast überhaupt nicht mehr fertig und dann habe ich mal im Einzelschrittmodus
die ganze Sache verfolgt. Ich habe zwar lange gebraucht, um mich umzugewöhnen, habe es dann
aber doch gepackt. Seitdem bin ich aktiver Anti-Selectierer und Anti-Activierer.
Die schlimmste Arbeit war es aber, die vielen bereits bestehenden Makros zu bereinigen.
Ich könnte noch viel mehr über gemachte Fehler und den daraus resultierenden Erfahrungen schreiben,
aber es muß ja nicht sein. Eigentlich wollte ich lediglich klarmachen, daß man Fehlern nicht die Zeit zum
"Einschleifen" geben sollte. Es ist dann sehr schwer, später sein Verhalten zu ändern und zu korrigieren.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!
Grüße aus Norderstedt, Peter
Registriert seit: 07.04.2016
Version(en): XP Pro 2002
Zitat:...dazu kann ich nur sagen, wehret den Anfängen, denn nichts ist beständiger als das Provisorium.
Ich weiß sehr wohl ein Klagelied mit mehreren Strophen darüber zu singen.
Da hast Du zweifelsohne recht, aber es muß doch zumindest für mich einleuchtend sein, was ich da programmiere; und es sollte doch auch für mich verständlich sein, was mir hier im Forum geraten wird. Also ich bin der Letzte, der nicht bereit ist dazuzulernen und für jedes erklärende Wort dankbar ist.
...aber jetzt zu meinem Problem und sorry, daß ich schon wieder mit einem Anfängerproblem nerve.
Ich habe zwei Arbeitsmappen für mein Projekt: Eines für die Testphase, in der ich Makros ausprobiere und ein zweites, mit meinem Projekt.
Nach dem Übertragen der Makros in die Projektmappe, funktioniert der Datumsgenerator plötzlich nicht mehr richig. Er zeigt mir kurz das richtige Ergebnis an und verfälscht es dann wiieder.
Ich glaube, es ist ein Problem das aus der Anordnung der Makros im Projekt Explorer entsteht. Momentan habe ich alle Makros im Container Tabelle 2 oder müssen die einelnen Markros in versch. Modulen sitzen.
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
Hallo,
Zitat:Momentan habe ich alle Makros im Container Tabelle 2 oder müssen die einelnen Markros in versch. Modulen sitzen.
... nun kannst Du Dir aussuchen, wie wir darauf antworten sollen ... per Kristallkugel, Kaffeesatz, Karten oder Würfel.
Oder, ... :18: und das wäre wahrscheinlich schnell zielführend, Du ließest uns einen Blick in Deine Datei werfen
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!
Grüße aus Norderstedt, Peter
|