Makro Programmierung

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Franco.

    Makro Programmierung

    Hallo zusammen,

    ich habe ein Problem mit der Makro (nicht von mir gemacht) und bitte um eine Lösung und zwar;

    Jedes Monat kriege ich eine Freischichtliste das ich in die Tabelle eintrage.
    Das Makro ist zur Zeit so Programmiert das in Spalte B immer anzeigt in welcher Monat jemand in Minus geht und bleibt solange bis die Plusbereich hat. (Siehe B4 = Juni13<0) weil seit Juni13 in Minus ist
    Sobald jemand in Plus geht bleibt aber Spalte B leer. (Siehe B5)
    Ich möchte das Makro so haben das Spalte B auch anzeigt wenn jemand >0 ist ,also muss B5 Juni13>0 anzeige weil seit Juni13 in Plus ist.

    Ich habe 2 Zeile als Beispiel gemacht:
    1x mit Minus
    1x mit Plus.

    Ist das machbar?

    Danke im vorraus
    MfG
    Franco
    Dateien
    • Makro.rar

      (26,54 kB, 152 mal heruntergeladen, zuletzt: )
    Moin,

    ich verstehe den Sinn überhaupt nicht, weil doch dann immer der erste Monat angezeigt wird?!
    Man müsste also nur den ersten Wert prüfen und dann eben > Monat oder < Monat ausgeben?!
    Wofür sollte das gut sein?

    Sinn würde es geben (so wie ich es verstehen), wenn du vom Letzten zum Ersten Monat überprüfst:

    • wie ist der aktuelle Zustand des letzten Monats (+ oder -)
    • prüfen wie lange dieser Zustand schon so ist (Rückwirkend)
    • sobald sich der Zustand ändert ODER die erste Spalte (der erste Monat) erreicht ist Ausgabe: + seit Monat oder - seit Monat


    lg
    :!: Danke an alle, die ihr Wissen freiwillig teilen und stets so kompetent & höflich sind :!:
    Hallo xpecidy,

    danke für die Antwort.

    es ist so gedacht das 1x im Jahr jeder die 0 Liniee überstreitet oder Unterstreitet,
    wenn zB. Jun13<0 in Minus ist und angezeigt wird, wissen wir Bescheid wie lange schon in Minus oder in Plus.

    Grüße

    Franco

    PS: So wie Du das gesagt hast ist das gemeint:

    Sinn würde es geben (so wie ich es verstehen), wenn du vom Letzten zum Ersten Monat überprüfst:



    • wie ist der aktuelle Zustand des letzten Monats (+ oder -)
    • prüfen wie lange dieser Zustand schon so ist (Rückwirkend)
    • sobald sich der Zustand ändert ODER die erste Spalte (der erste Monat) erreicht ist Ausgabe: + seit Monat oder - seit Monat
    Servus,

    bin gerade bissl aufm Sprung. Probier das mal:

    Visual Basic-Quellcode

    1. Sub MonatEintragen(AG As String)
    2. Dim FirstDataRow As Integer, LastDataRow As Integer, check As Integer
    3. Dim FirstDataCol As Integer, LastDataCol As Integer
    4. Dim Ze As Integer, Sp As Integer
    5. Dim vDummyMonat As String
    6. Dim vMinusstunde As Boolean
    7. With ActiveSheet
    8. FirstDataRow = 4
    9. LastDataRow = .Cells(Rows.Count, 1).End(xlUp).Row
    10. FirstDataCol = 5
    11. LastDataCol = .Cells(2, Columns.Count).End(xlToLeft).Column
    12. 'Alte Einträge löschen
    13. Range("B4:B" & LastDataRow).ClearComments
    14. 'Letztes Datum in Zeile 2 bestimmen
    15. If Not IsDate(Cells(2, LastDataCol)) Then
    16. Do While Not IsDate(Cells(2, LastDataCol))
    17. LastDataCol = LastDataCol - 1
    18. Loop
    19. End If
    20. For Ze = FirstDataRow To LastDataRow
    21. vDummyMonat = ""
    22. For Sp = LastDataCol To FirstDataCol Step -2
    23. If Not IsEmpty(Cells(Ze, Sp)) Then
    24. If vDummyMonat = "" Then
    25. vDummyMonat = Cells(2, Sp).Value
    26. vMinusstunde = Cells(Ze, Sp).Value < 0
    27. End If
    28. If (Cells(Ze, Sp).Value < 0) <> vMinusstunde Then
    29. Cells(Ze, 2).Value = IIf(vMinusstunde, "-", "+") & " seit " & Format(Cells(2, Sp + 2).Value, "MMM YY")
    30. GoTo nächsteZeile
    31. Else
    32. Cells(Ze, 2).Value = IIf(vMinusstunde, "-", "+") & " seit " & Format(Cells(2, Sp).Value, "MMM YY")
    33. End If
    34. End If
    35. Next Sp
    36. nächsteZeile:
    37. Next Ze
    38. End With
    39. End Sub


    lg
    :!: Danke an alle, die ihr Wissen freiwillig teilen und stets so kompetent & höflich sind :!: