Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Daten aus Datum berechnen

Betrifft: Daten aus Datum berechnen von: Tim
Geschrieben am: 05.11.2014 20:23:13

Hallo zusammen,

ich hoffe Ihr könnt mir bei folgenden 3 Punkte weiterhelfen. Ich bekomme es nicht hin.

1.
Wollte ich das in C19 das Datum nicht automatisch berechnet wird, sondern das man manuell ein Datum eingeben kannn.
Und diesen Zeitraum soll es mir dann in D19 berechnen. Die Punkte für die berechnung stehen in A27:A102.
Dabei ist noch wichtig das es die tatsächlichen Punkte von den Monaten berechnet. Bsp.
(B19) 03.05.2011 - dann soll es mir im Jahr 2011 im Monat 5 nicht die vollen Punkte nehmen, sondern von 28 Tagen.
Das gleiche natürlich auch mit dem Enddatum (C19)

2.
In D20 sollte es auch nur die tats. Punkte vom Zeitraum B20 und C20 berechnen

3.
Das es noch übersichtlicher ist, sollte es die Daten von B19 und C19 in H27:H102 übernhemen. B20 und C20 sollte in J27:J102 stehen. So wie es auch in den tats. Tage und tats. Punkte die Spalten zuvor ist.

anbei noch die Excel Datei:

https://www.herber.de/bbs/user/93580.xlsm

und der Code:

Private Sub CommandButton1_Click()

    Dim Start As Date
    Dim Ende As Date
    Dim Monat As Long
    Dim i As Long
    Dim ZeileStart As Long, ZeileEnde As Long
    Dim Jahr1 As Long, ZeileJahr1 As Long
    Dim dblSum As Double
    
'Daten zum 1. Jahr aus Refernzzelle einlesen
    With Me.Range("A25")
        Jahr1 = .Value
        ZeileJahr1 = .Row
    End With
    
'Datumsangaben Zeile 12 bearbeiten
    Start = Me.Range("B12").Value
    Ende = Me.Range("C12").Value
    
    ZeileStart = ZeileJahr1 + (Year(Start) - Jahr1) * 16 + 1 + Month(Start)
    ZeileEnde = ZeileJahr1 + (Year(Ende) - Jahr1) * 16 + 1 + Month(Ende)
    
    Me.Cells(ZeileStart, 4).Value = Me.Cells(ZeileStart, 3) - Day(Start)
    Me.Cells(ZeileEnde, 4).Value = Day(Ende)
    
    For i = ZeileStart + 1 To ZeileEnde - 1
        Select Case Me.Cells(i, 2).Value
            Case 1 To 12
                Me.Cells(i, 4).Value = Me.Cells(i, 3)
        End Select
    Next i
    
'Datumsangaben Zeile 16 bearbeiten
    If Me.Range("B16").Value > 0 And Me.Range("C16").Value > 0 Then
    
        Start = Me.Range("B16").Value
        Ende = Me.Range("C16").Value
        
        ZeileStart = ZeileJahr1 + (Year(Start) - Jahr1) * 16 + 1 + Month(Start)
        ZeileEnde = ZeileJahr1 + (Year(Ende) - Jahr1) * 16 + 1 + Month(Ende)
        
        Me.Cells(ZeileStart, 6).Value = Me.Cells(ZeileStart, 3) - Day(Start)
        Me.Cells(ZeileEnde, 6).Value = Day(Ende)
        
        For i = ZeileStart + 1 To ZeileEnde - 1
            Select Case Me.Cells(i, 2).Value
                Case 1 To 12
                    Me.Cells(i, 6).Value = Me.Cells(i, 3)
            End Select
        Next i
    End If
    
'Summenberechnen
    Range("D12") = Application.Sum(Range("E27:E100"))
    Range("D16") = Application.Sum(Range("G27:G100"))
    
'Datumsangaben Zeile 19 ermitteln
    If Range("C16") = "" Then
        Range("B19").Value = Range("C12") + 1
    Else
        Range("B19").Value = Range("C16") + 1
    End If
    
    Dim Datum As Date
    Dim VarDatum As Date
    
    Datum = WorksheetFunction.Max _
            (Me.Range("B12").Value, Me.Range("C12").Value, _
             Me.Range("B16").Value, Me.Range("C16").Value)
             
    Datum = "01." & Month(Datum) + 1 & "." & Year(Datum)
    
    VarDatum = "30.06." & Year(Datum)
    
    If Datum < VarDatum Then
        Me.Range("C19").Value = VarDatum
    Else
        VarDatum = "31.12." & Year(Datum)
        Me.Range("C19").Value = VarDatum
    End If
    
'Ergebnis für Datumsangaben Zeile 19 ermitteln
    Start = Me.Range("B19").Value
    Ende = Me.Range("C19").Value
    
    ZeileStart = ZeileJahr1 + (Year(Start) - Jahr1) * 16 + 1 + Month(Start)
    ZeileEnde = ZeileJahr1 + (Year(Ende) - Jahr1) * 16 + 1 + Month(Ende)
    
    dblSum = 0
    For i = ZeileStart To ZeileEnde
        Select Case Me.Cells(i, 2).Value
            Case 1 To 12
                dblSum = dblSum + Me.Cells(i, 1)
        End Select
    Next i
    Me.Cells(19, 4).Value = dblSum
    
'Datumsangaben Zeile 20 ermitteln
    With Me.Range("B19")
        Me.Range("B20").Value = .Value
        'Datum 1 Jahr später
        Me.Range("C20").Value = DateSerial(Year(.Value) + 1, Month(.Value), Day(.Value)) - 1
    End With
    
'Ergebnis für Datumsangaben Zeile 20 ermitteln
    Start = Me.Range("B20").Value
    Ende = Me.Range("C20").Value
    
    ZeileStart = ZeileJahr1 + (Year(Start) - Jahr1) * 16 + 1 + Month(Start)
    ZeileEnde = ZeileJahr1 + (Year(Ende) - Jahr1) * 16 + 1 + Month(Ende)
    
    dblSum = 0
    For i = ZeileStart To ZeileEnde
        Select Case Me.Cells(i, 2).Value
            Case 1 To 12
                dblSum = dblSum + Me.Cells(i, 1)
        End Select
    Next i
    Me.Cells(20, 4).Value = dblSum
    
End Sub
Danke und Gruß
Tim

 

Beiträge aus den Excel-Beispielen zum Thema "Daten aus Datum berechnen"