Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketUdfordring med datoer i VBA

 Besvar Besvar
Forfatter
Miltoft Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 03.Jun.2021
Land: Danmark
Status: Offline
Point: 10
Direkte link til dette indlæg Emne: Udfordring med datoer i VBA
    Sendt: 03.Jun.2021 kl. 11:32
Hej med Jer

Jeg sidder med et større Excel ark der registrerer nogle reklamationer. Til det vil jeg gerne have excel til at angive hvornår en reklamation er Low, Medium, High, Critical.

Dette skal være udfra følgende kriterier:

Low: - Dato for oprettelse (registreret med Timestamp) er lig med dd. 
- Totalen af kostprisen er under 3000 kr.
- Der er anført en test i Action 1 (Felt)

Medium: - Dato for oprettelse (registreret med Timestamp) er ældre end dd. + 2 dage 
- Totalen af kostprisen er lig med 3000 kr.
- Der er anført en test i Action 1 & 2 (Felt)

High: - Dato for oprettelse (registreret med Timestamp) er ældre end dd. + 5 dage 
- Totalen af kostprisen er højere end 3000 kr.
- Der er anført en test i Action 1, 2 & 3  (Felt)

Critical: - Dato for oprettelse (registreret med Timestamp) er ældre end dd. + 7 dage 
- Totalen af kostprisen er højere 3000 kr.
- Der er anført en test i Action 1, 2 & 3 (Felt)

Jeg har fået det meste af det til at virke. Men det med datoerne kan jeg simpelthen ikke få til at virke. Kan I evt. hjælpe mig?

Evt. optimeringer af koden er hjertens velkommen, da jeg stadig er ny i denne form for kodning.

H29 = Timestamp
C25 = Today()

Min kode ser således ud:

Private Sub Claim_Importance()
    
    If Range("C25").Value = Range("H29").Value Or Range("AA29").Value > 3000 Or Range("AD29").Value > 0 Then
        Range("C29").Value = "Low"
End If
    
    If Range("H29").Value + 2 > Range("C25").Value Or Range("AE29").Value > 0 Or Range("AA29").Value = 3000 Then
        Range("C29").Value = "Medium"
End If
    
    If Range("H29").Value + 5 > Range("C25").Value Or Range("AF29").Value > 0 Or Range("AA29").Value > 3000 Then
        Range("C29").Value = "High"
End If
    
    If Range("H29").Value + 7 > Range("C25").Value Then
        Range("C29").Value = "Critical"
End If
  
    If Range("AA29").Value > 3000 Then
        Range("C29").Value = "Needs Approval"
        
ElseIf Range("H29").Value = "" Then
        Range("C29").Value = ""
    
End If
End Sub


De bedste hilsner

Daniel 
Til top



Til top
Svensmarke Se dropdown
Forum Begynder
Forum Begynder


Medlem: 01.Jun.2021
Land: Danmark
Status: Offline
Point: 7
Direkte link til dette indlæg Sendt: 03.Jun.2021 kl. 17:47
Hej Miltoft
Som jeg forstår opgaven er du nødt til, enten i din VBA-kode at lægge en trigger ind der sørger for at dine værdier hele tiden opdateres, idet jeg går ud fra at kriterierne Low, Medium o.s.v. ændrer sig med tiden, eller løse opdateringsproblematikken med  Hvis-formler i stedet. 
Personligt ville jeg løse den med Hvis-formler af typen 'HVIS(IDAG()-H29<1;"Low";Hvis(.........))', eventuelt indlagt i din VBA-kode, men afhænger naturligvis af datamængde.
Hvis-formlen kan blive lang, så tungen må holdes lige i munden :).
vh. Peter
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 04.Jun.2021 kl. 21:26
Det er lidt svært at forstå hvad det er du vil og hvad du mener..

Hvor skal koderne bruges?
I en Userform eller på en knap?
Eller skal de laves som excel koder direkte i arket?

upload altid et eksempel, som folk kan se og arbejde med.
Ellers er det næsten umuligt at vide, hvad du mener.

Men i en VBA kode skal en dato altid formatteres i koden.

--------------------
Og Peter.
Dags Dato ændres hver dag, når arket åbnes.
Der har du din trigger.

Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk