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

auch Dezember noch auf's alte Jahr verteilen.

auch Dezember noch auf's alte Jahr verteilen.
Wolfgang
Hallo,
zunächst noch allen vorab Frohe (Rest)-Feiertage!
Der nachfolgende Code befindet sich in einem UF und berechnet zwischen der Textbox5 und Textbox6 die Zeit bzw. ermittelt aus Textbox 25 die ausgewiesenen Monate und nimmt aus Textbox 9 eine Summe. Diese Summe soll nach Monaten berechnet in Textbox 13-16 (beginnend mit der Jahreszahl, die in Tabelle Daten M1 enthalten ist) verteilt werden. Bislang rechnet der Code allerdings schon ab Dezember eines Jahres die Summe auf Januar des folgenden Jahres. Wie kann ich den Code ändern, damit er auch an dieser Stelle durchrechnet. Also, z.B. ab 15.12. beginnend noch bis 31.12. verteilt und dann die weitere Zeit im Beispiel also vom 01.01. bis 14.01. dann auf Januar. Danke schon jetzt für die Rückmeldungen.
Gruß - Wolfgang
'Verteilung der Kosten auf Monate
Private Sub berechnen()
Dim daTB5 As Date, daTB6 As Date, intB5j As Integer
Dim SchnittTag As Double, ii As Integer
Dim datVon As Date, datBis As Date
Dim intB5K As Integer
With Application.WorksheetFunction
If IsDate(TextBox5) And IsDate(TextBox6) Then
daTB5 = CDate(TextBox5) + 31
daTB6 = CDate(TextBox6) + 32
intB5j = Year(daTB5)
intB5K = Year(daTB5)
TextBox25 = .Round((.Max(daTB5, daTB6) - .Min(daTB5, daTB6) + 1) / 30.4, 1)
SchnittTag = CDbl(TextBox9) / (daTB6 - daTB5)     ' Wert pro Tag
If intB5K = Sheets(2).Range("M1").Value Then
For ii = 0 To Year(daTB6) - intB5j
datVon = .Max(daTB5, DateSerial(intB5j + ii, 1, 1))
datBis = .Min(daTB6, DateSerial(intB5j + ii + 1, 1, 1))
Me("TextBox" & 13 + ii) = .Round(SchnittTag * (datBis - datVon), 2)
If ii 

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Verteilen auf Jahre
26.12.2011 10:31:14
Erich
Hi Wolfgang,
in deinem Code wird nichts auf Monate verteilt - die Ausgabe in TextBox25 ist für die Berechnung ohne Belang.
Verteilt wird taggenau auf Jahre - nicht aber "nach Monaten berechnet".
Dass Daten vopm Dezember in den Januar verschioben werden, liegt wohl an der Addition von 31 bzw. 32
daTB5 bzw. daTB6. Wozu sollte diese Addition gut sein?
Deine UF habe ich jetzt nicht nachgebaut, sondern Ein- und Ausgaben im Tabellenblatt vorgesehen.
Aber das kannst du ja leicht übertragen:

Sub berechnen2()                          ' Verteilung der Kosten auf JAHRE
Dim daTB5 As Date, daTB6 As Date
Dim SchnittTag As Double, ii As Integer, intTage As Integer
With Application.WorksheetFunction
If IsDate(Cells(5, 1)) And IsDate(Cells(6, 1)) Then
daTB5 = CDate(Cells(5, 1))       '+ 31 wofür ?
daTB6 = CDate(Cells(6, 1))       '+ 32 wofür ?
SchnittTag = CDbl(Cells(9, 1)) / (daTB6 + 1 - daTB5)  ' Wert pro Tag
For ii = Year(daTB5) To Year(daTB6 - 1)
intTage = .Min(daTB6 + 1, DateSerial(ii + 1, 1, 1)) _
- .Max(daTB5, DateSerial(ii, 1, 1))
Cells(ii + 5 - Year(daTB5), 2) = .Round(SchnittTag * intTage, 2)
Cells(ii + 5 - Year(daTB5), 3) = "Jahr " & ii
Next ii
End If
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
BeiSpielMappe
26.12.2011 10:34:05
Erich
Hi,
da hatte ich vergessen, die kleine BeiSpielMappe hochzuladen...

Die Datei https://www.herber.de/bbs/user/78088.xlsm wurde aus Datenschutzgründen gelöscht


Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
AW: BeiSpielMappe
28.12.2011 06:15:24
Wolfgang
Hallo Erich,
entschuldige bitte vielmals, dass ich mich jetzt erst zurückmelde (mich hat irgenein Grippevirus erwischt, so dass ich derzeit das Bett hüte). Danke sehr herzlich für Deine Ausarbeitungen. Sobald ich den Kopf wieder ein wenig klarer habe, versuche ich, den Code entsprechend "einzubauen". Werde mich dann auf jeden Fall danach noch wieder melden. Ich hoffe bis dahin auf Dein Verständnis.
Gruß - Wolfgabg
Anzeige
Korrrektur BeiSpielMappe
28.12.2011 13:30:12
Erich
Hi Wolfgang,
in der Prozedur berechnen2 muss es statt
For ii = Year(daTB5) To Year(daTB6 - 1)
heißen:
For ii = Year(daTB5) To Year(daTB6)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Brauche doch noch Deine Hilfe, Erich
29.12.2011 08:59:40
Wolfgang
Hallo Erich,
ich habe versucht, nun Deinen Code für die Tabelle in den UF einzubauen. Bedingt ist mir das auch gelungen. Ich schaffe es aber nun nicht, dass die errechneten Werte in der Textbox 13 (für das laufende Jahr) - Jahresbezeichnung steht dabei dann in Label24 und TextBox24 für das folgende Jahr (dann Label25) angezeigt werden. Wäre für Deine weitere Hilfestellung sehr dankbar.
Gruß - Wolfgang
  • 
    Sub berechnen()                          ' Verteilung der Kosten auf JAHRE
    Dim daTB5 As Date, daTB6 As Date
    Dim SchnittTag As Double, ii As Integer, intTage As Integer
    With Application.WorksheetFunction
    If IsDate(TextBox5) And IsDate(TextBox6) Then
    daTB5 = CDate(TextBox5)       '+ 31 wofür ?
    daTB6 = CDate(TextBox6)       '+ 32 wofür ?
    SchnittTag = CDbl(TextBox9) / (daTB6 + 1 - daTB5)  ' Wert pro Tag
    For ii = Year(daTB5) To Year(daTB6)
    intTage = .Min(daTB6 + 1, DateSerial(ii + 1, 1, 1)) _
    - .Max(daTB5, DateSerial(ii, 1, 1))
    'Cells(ii + 5 - Year(daTB5), 2) = .Round(SchnittTag * intTage, 2)
    Me("TextBox" & 13 + ii) = .Round(SchnittTag * intTage, 2) 'wie muss ich das hier  _
    anpassen, damit die Daten anstelle in der Tabelle in der Textbox13 für das laufende Jahr (angezeigt in Label24) und Textbox14/label25 für das weitere Jahr angezeigt werden?
    Cells(ii + 5 - Year(daTB5), 3) = "Jahr " & ii
    Next ii
    End If
    End With
    End Sub
    

  • Anzeige
    Werte in die UF
    29.12.2011 10:17:31
    Erich
    Hi Wolfgang,
    probier mal
    
    Me("TextBox" & 13 + ii - Year(daTB5)) = .Round(SchnittTag * intTage, 2)
    Me("Label" & 24 + ii - Year(daTB5)) = "Jahr " & ii
    
    Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich, der auch einen guten Rutsch wünscht
    klappt super - Danke!!!!
    29.12.2011 10:53:23
    Wolfgang
    Hallo Erich,
    Danke erneut für Deine schnelle Rückmeldung. Habe den Code ergänzt. Er läuft nun wunderbar und befüllt mir passend die Textboxes. Hab vielen vielen Dank dafür. Danke auch für Deine Geduld mit mir.
    Für den Rest des Jahres und insbesondere für das kommende Jahr wünsche ich Dir alles Gute!
    Gruß - Wolfgang
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige