Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Wochentag in VBA
#11
Hi Günther!
Code:
Weekday(startDatum, [vbSunday])
hab ich so auch noch nicht gesehen.  Sleepy
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)
Antworten Top
#12
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.
Antworten Top
#13
@ Ralf:

... der Wille zur Einigung ist immer vorhanden! Angel 
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!
Antworten Top
#14
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
Antworten Top
#15
Hallo,

du mußt die Ereignisse ausschalten

Code:
   Application.EnableEvents = False
   Range("H3") = startDatum
   Application.EnableEvents = True
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#16
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.
Antworten Top
#17
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:
Antworten Top
#18
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
Antworten Top
#19
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.
Antworten Top
#20
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste