If Then - mit variablen Datum

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von jannis-01.

    If Then - mit variablen Datum

    Hallo Leute,

    ich habe ein Problem und finde einfach keine Lösung..

    Das Ziel ist es, Daten in ein bestimmtes Feld eines zweiten Excelsheets (Sheet2) zu speichern, abhängig von einem Datum aus dem ersten Sheet (Sheet1).

    Das Datum ist in der Variable „Jahr“ gespeichert und hat immer folgendes Format: „20xx/xx“.


    Allerdings Variiert in dem ersten Sheet Teilweise das Jahr (Monat hat logischerweise immer das gleiche Format), was Probleme bei IF verzweigung macht. Diese muss nämlich Variabel im Bezug auf das Jahr sein.

    Mein
    1. Lösungsansatz sah folgendermaßen aus, funktioniert nur leider nicht

    VB.NET-Quellcode

    1. If ShipQuarter = "Jahr&/10" Or ShipQuarter = "Jahr&/11" Then
    2. Sheets(Sheet2).Range("D9").Value = Application.Sum(Sheets("Sheet1").Range("E2:E" & ZeilenNummer))
    3. End If



    Mein
    2. Lösungsansatz sah folgendermaßen aus, speichert allerdings auch die Daten in E9 wenn man ShipQuarter = „/11“ ist.


    VB.NET-Quellcode

    1. If ShipQuarter <> "/1" Or ShipQuarter <> " /2" Then Sheets(Sheet2).Range("E9").Value = Application.Sum(Sheets("Sheet1").Range("E2:E" & ZeilenNummer))
    2. End If


    Ich hoffe ich habe mein Problem verständlich beschreiben können..
    Kann mir einer von euch helfen? :)


    Viele Grüße,
    Jannis
    Splitte den String an "/" und Du hast im 1. Feld das Jahr, im 2. den Monat. Nimm als Tag den 1., dann kannst Du Dir ein DateTime-Objekt bauen. Mit dem kannst Du richtig rechnen und mehrere davon auch vergleichen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Sieht mir weniger nach einer VB2010-Frage aus, als nach ExcelVBA.

    Das Datum ist in der Variable „Jahr“ gespeichert und hat immer folgendes Format: „20xx/xx“.
    Abgesehen von der Tatsache, dass es nicht gerade geschickt ist, ein Datum in der Variable Jahr zu speichern:
    Das Format, das du meinst, ist eine Anzeigeeigenschaft der Zelle.
    Das Zellformat ist vermutlich vom Typ Date.

    Also kannst du auch mit den Datumsfunktionen rechnen.
    Ich zeigs mal ganz rudimentär:

    VB.NET-Quellcode

    1. Datum=Sheets(1).Range("A1").Value
    2. If Year(Datum) = 2011 And (Month(Datum) = 10 Or Month(Datum) = 11) Then
    3. ...


    Ansonsten kannst du mal den kompletten Code posten, damit man die Zusammenhänge versteht.

    Randbemerkung:
    Äusserst unelegant ist dein kompletter Ansatz, mit hart codierten Werten und Ranges zu arbeiten.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hi Leute,

    danke für die vielen Antworten! :)
    Ich hab das Problem jetzt folgendermaßen (mit Hilfe) gelöst:

    VB.NET-Quellcode

    1. Dim Quartal As StringQuartal = Right(ShipQuarter, 1) Select Case QuartalCase 1Sheets(NameDesRichigenSheet).Range("D9").Value = Application.Sum(Sheets("Suche").Range("F2:F" & AnzahlDerEinträge))End Select



    Liebe Grüße,
    Jannis