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

vba Datumsfunktion Formatierung

vba Datumsfunktion Formatierung
20.02.2019 08:51:03
Cheesy
Hallo zusammen,
ich bin gerade dabei mir eine kleine Funktion zu schreiben, die mir immer automatisch das Datum des nächsten Samstags ausgibt.
Sie funktioniert auch soweit, allerdings bekomme ich die Formatierung des zurückgegebenen _
Wertes nicht hin.

Function nextsat(sat)
nextsat = Format((sat + 7 - Weekday(sat, vbSunday)), "dd.mm.yyyy")
End Function

Damit erreiche ich zwar, dass der Wert als Datum angezeigt wird, allerdings kann ich das Format nicht mehr nachträglich ändern. In der Zellformatierung wird mir auch angezeigt, dass die Zelle kein bestimmtes Format hat.
Bei der Funktion heute() funktioniert das, es muss also eine Möglichkeit geben.
Wie schaffe ich es also, dass der Wert in der Zelle automatisch als Datum definiert ist? Habt ihr einen Tipp für mich?
Danke, Gruß
Peter

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba Datumsfunktion Formatierung
20.02.2019 09:29:03
Nepumuk
Hallo Peter,
die Format-Funktion gibt einen Text zurück, keinen Datumswert. Versuche es mal mit der DateSerial / DateValue - Funktion.
Gruß
Nepumuk
AW: vba Datumsfunktion Formatierung
20.02.2019 09:49:09
Cheesy
Hallo Nepomuk,
damit komme ich leider auch nicht weiter. Intern rechnet Excel ja mit Zahlen. Der heutige Tag ist also 43516. Damit kann ich in meiner Funktion ja auch arbeiten, aber das Ergebnis soll eben keine Zahl sondern ein Datum sein. Ich kann das zwar nachträglich als Datum formatieren, aber ich hätte es gerne, dass die Funktion das automatisch macht. Eben so wie die Funktion heute().
Gruß
Peter
AW: vba Datumsfunktion Formatierung
20.02.2019 10:20:47
Nepumuk
Hallo Peter,
in meinem Excel funktioniert das:
Public Sub Test()
Cells(1, 1).Value = DateSerial(2019, 2, 20)
End Sub

Gruß
Nepumuk
Anzeige
AW: vba Datumsfunktion Formatierung
20.02.2019 10:36:37
Cheesy
Hallo Nepomuk,
das schon, aber ich habe als Ausgangswert ja nicht (2019, 2, 20), sondern 43516. Das ist der Wert, mit dem Excel intern rechnet. Diesen kann ich auch über "Zellen formatiern" in einen Datumsformat umwandeln, aber ich möchte gerne, dass die Funktion das direkt selbst macht.
Wie die Funktion funkioniert:
ich habe ein beliebiges Datum in einer Zelle stehen (z.B. A1)
die Funktion nextsat(A1) errechnet automatisch den folgenden Samstag. Die Funktion gibt allerdings nicht den Wert 23.02.2019 zurück, sondern 43519.
Gruß
Peter
AW: vba Datumsfunktion Formatierung
20.02.2019 11:58:09
Nepumuk
Hallo Peter,
dann mach es so:
Function nextsat(sat As Date) As Date
    nextsat = DateValue(Format((sat + 7 - Weekday(sat, vbSunday)), "dd.mm.yyyy"))
End Function

Gruß
Nepumuk
Anzeige
AW: vba Datumsfunktion Formatierung
20.02.2019 12:11:40
Cheesy
Hi,
klappt leider nicht, Ergebnis ist imer noch eine Zahl. :-(
Gruß
Peter
AW: vba Datumsfunktion Formatierung
20.02.2019 13:14:47
ede
Hallo Wolfgang,
eine Function liefert den Datentyp zurück, den du deklariert hast. Im Beispiel von Nepumuk kommt also eine Zahl für das Datum zurück. Du musst der Variable/Zelle die Formatierung geben, also die Variable NeuesDatum = nextsat(DeinDatum) muss formatiert werden!

Sub nextSamstag(date_in As Date, date_out As Range)
date_out = nextsat(date_in)
date_out.NumberFormat = "m/d/yyyy"
End Sub

Ich hoffe du hast es jetzt verstanden, sonst kann ich auch nicht helfen!
gruss
ede
Anzeige
AW: vba Datumsfunktion Formatierung
20.02.2019 14:36:24
Cheesy
Hallo Ede,
meine Frage ist ja eben genau, ob eine Funktion den Wert formatiert zurückgeben kann. Ich möchte ja eben keine Prozedur haben, sondern eine Funktion, die ich direkt in die Zelle eintragen kann. Diese wäre dann normal nutzbar wie jede andere Funktion von Excel (wie z.B. Summe() usw.).
Ich habe mich halt nur gewundert, dass die Funktion heute() nicht nur das heutige Datum zurückgibt, sondern die Zelle auch direkt als Datum formatiert ist. Dieses Verhalten wollte ich auch für meine Funktion haben.
Das scheint aber so nicht zu klappen.
Gruß
Peter (nicht Wolfgang)
Anzeige
AW: vba Datumsfunktion Formatierung
25.02.2019 17:46:41
Mullit
Hallo,
eine UDF kann eigentl. keine Zellen formatieren, aber da gibt's mehrere Techniken, relativ klassisch wäre es, wenn das Change-Event auf Deine Zelleingabe reagiert:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range) '// Deinen Bereich anpassen.... 
If Not Intersect(Target, Range(Cells(1, 1), Cells(20, 20))) Is Nothing Then
   With Target
        If .Count = 1 Then _
          If .HasFormula Then _
             If InStr(1, .Formula, "nextsat") <> 0 Then _
                .NumberFormat = "m/d/yyyy"
   End With
End If
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 14

Gruß, Mullit
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige