Tageszahl errechnen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Tageszahl errechnen
von: Karsten
Geschrieben am: 19.09.2015 21:10:38

Hallo Excelfreunde,
in meinem angehängtem Beispiel wird bei Makrodurchlauf die Zelle mit dem aktuellen Datum in Spalte A angesteuert. Ich würde gern den Code folgendermaßen umschreiben (kann es aber nicht):
Wenn ich unterhalb oder überhalb des Datums eine Zelle aktiviere soll bei Makrodurchlauf die Zahl der Zellen bis zum aktuellen Datum errechnet werden und in einer Msgbox angezeigt werden. Also: 19. Sept. ist aktueller Tag, 25. Sept. wird aktiviert, Msgbox zeigt 7 Tage an.
https://www.herber.de/bbs/user/100271.xls
Für eure Hilfe bin ich sehr dankbar.
Gruß Karsten
PS. Den Code hat jemand aus dem Forum erstellt.

Bild

Betrifft: AW: Tageszahl errechnen
von: Werner
Geschrieben am: 19.09.2015 21:21:17
Hallo Karsten,
und warum stellt du den Code hier nicht rein wenn du möchtest, dass er angepasst werden soll??
Gruß Werner

Bild

Betrifft: AW: Tageszahl errechnen
von: Karsten
Geschrieben am: 19.09.2015 22:48:34
Hallo Werner,
ich dachte als Beispielmappe ist es besser.
Gruß Karsten

Bild

Betrifft: AW: Tageszahl errechnen
von: Sepp
Geschrieben am: 19.09.2015 21:23:40
Hallo Karsten,
so?
In das Modul der Tabelle.

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lngDif As Long

If Not Intersect(Target, Range("A:A")) Is Nothing Then
  If IsDate(Target(1, 1)) Then
    lngDif = DateDiff("d", Date, Target(1, 1))
    If lngDif >= 0 Then lngDif = lngDif + 1
    If lngDif < 0 Then lngDif = lngDif - 1
    MsgBox lngDif & " Tag" & IIf(Abs(lngDif) = 1, "", "e")
  End If
End If

End Sub


Gruß Sepp


Bild

Betrifft: AW: Tageszahl errechnen
von: Karsten
Geschrieben am: 19.09.2015 22:57:04
Hallo Sepp,
Danke. Mit Activecell statt Target kann ich es auch in einem "normalen" Modul laufen lassen. So brauche ich es. Nachträglich fällt mir aber ein, ob es auch ein Fenster geben kann, was nach ca. einer Sekunde wieder von allein weggeht. Vielleicht kannst du mir diese Möglichkeit noch zeigen.
Gruß Karsten

Bild

Betrifft: AW: Tageszahl errechnen
von: fcs
Geschrieben am: 19.09.2015 21:59:14
Hallo Karsten,
für die Anzeige der Zeilendifferenz muss das Makro etwa wie folgt aussehen.
Gruß
Franz

Sub a()
Dim varResult0 As Variant
    Dim Zeile As Long, ZeileDiff As Long
    Dim strMsg As String, strTitel As String
    Zeile = ActiveCell.Row
    varResult0 = Application.Match(CDbl(Date), Range("A5:A65536"), 0)
    
    strTitel = "Zeile mit Datum " & Format(Date, "DD.MM.YYYY") & " ist"
    strMsg = "wurde nicht gefunden!"
    
    If IsNumeric(varResult0) Then
        ZeileDiff = varResult0 + 4 - Zeile
        Select Case ZeileDiff
            Case 0
                strMsg = "in"
            Case Is < 0
                strMsg = Abs(ZeileDiff) & " Zeilen oberhalb"
            Case Is > 0
                strMsg = Abs(ZeileDiff) & " Zeilen unterhalb"
        End Select
    End If
    MsgBox strMsg & " der aktiven Zeile", vbOKOnly, strTitel
End Sub


Bild

Betrifft: AW: Tageszahl errechnen
von: Karsten
Geschrieben am: 19.09.2015 22:53:20
Hallo Franz,
danke vielmals.
Gibt es auch ein Fenster, was nach ca. einer Sekunde wieder verschwinde ohne ok zu klicken. Ich weiß, dass ich nicht direkt danach gefragt habe. Vielleicht kannst du mir diese Möglichkeit auch noch geben.
Gruß Karsten

Bild

Betrifft: AW: Tageszahl errechnen
von: fcs
Geschrieben am: 19.09.2015 23:39:15
Hallo Kartsen,
hier die Variante mit automatisch schließender Box.
Ich hab aber den Eindruck, das die VBA-Sekunde relativ lang ist. Hängt wohl mit der Systemuhr zusammen.
Wenn es schneller sein soll, dann kannst du ja auf die ENTER-Taste drücken oder mit der Maus klicken.
Gruß
Franz

Sub a()
    Dim varResult0 As Variant
    Dim Zeile As Long, ZeileDiff As Long
    Dim strMsg As String, strTitel As String
    Dim WsShell, intText As Integer
    Zeile = ActiveCell.Row
    varResult0 = Application.Match(CDbl(Date), Range("A5:A65536"), 0)
    
    strTitel = "Zeile mit Datum " & Format(Date, "DD.MM.YYYY") & " ist"
    strMsg = "wurde nicht gefunden!"
    
    If IsNumeric(varResult0) Then
        ZeileDiff = varResult0 + 4 - Zeile
        Select Case ZeileDiff
            Case 0
                strMsg = "in"
            Case Is < 0
                strMsg = Abs(ZeileDiff) & " Zeilen oberhalb"
            Case Is > 0
                strMsg = Abs(ZeileDiff) & " Zeilen unterhalb"
        End Select
    End If
    'MsgBox strMsg & " der aktiven Zeile", vbOKOnly, strTitel
    Set WsShell = CreateObject("WScript.Shell")
    intText = WsShell.Popup(strMsg & " der aktiven Zeile", 1, strTitel)
    ' Die 1 in der vorherigen Zeile gibt die Dauer der Öffnung an.
    Set WsShell = Nothing
End Sub


Bild

Betrifft: AW: Tageszahl errechnen
von: Karsten
Geschrieben am: 20.09.2015 09:08:35
Hallo Franz,
Danke. Es funktioniert prima.
Gruß Karsten

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Tageszahl errechnen"