Avatar billede side1 Novice
27. januar 2020 - 13:48 Der er 3 kommentarer

Skift af tekst farve hvis dato er overskredet

Jeg bruger Microsoft Date and Time Picker Control 6.0  i forbindelse med en to-do liste. Det virker sådan set ok, men jeg vil gerne have at den skifter tekst farve hvor datoen ligger før i dag (dvs. den dag man har dokumentet åbent). Jeg troede jeg kunne bruge ”conditional formating” men det virker ikke, det virker ikke som om datoen man har valgt, kommer vi at ligge som en værdi i den enkelte celle. Nogen der ved hvordan man kan så teksten til at skifte farve hvis den valgte dato er før dagen i dag

Nuværende kode Visual Basic:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
    With Ark1.DTPicker1
    .Height = 20
    .Width = 20
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
      .Visible = True
      .Top = Target.Top
      .Left = Target.Offset(0, 1).Left
      .LinkedCell = Target.Address
    Else
      .Visible = False
    End If
  End With
End Sub
Avatar billede finb Ekspert
27. januar 2020 - 14:13 #1
Betinget formattering burde virke,
har du rette format ?
Avatar billede side1 Novice
27. januar 2020 - 14:51 #2
Jep, jeg har dato format for indstilling, Jeg har sjovt nok for lave en dato sortering, så en eller anden værdi ligger der i cellen, men betinget formattering virker ikke. Ved at min opsætning af betinget formattering er korrekt, for hvis jeg bare skriver datoen, så skifter den farven via betinget formatering.

Jeg har også prøvet med tilføje denne kode:

If IsDate(ActiveCell.Value) And ActiveCell.Value > Date Then
    ActiveCell.Interior.Color = RGB(0, 255, 0)
Else
    ActiveCell.Interior.Color = RGB(221, 235, 247)
End If

Men virker heller ikke
Avatar billede side1 Novice
27. januar 2020 - 15:19 #3
Har prøvet dette:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
    With Ark1.DTPicker1
    .Height = 20
    .Width = 20
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
      .Visible = True
      .Top = Target.Top
      .Left = Target.Offset(0, 1).Left
      .LinkedCell = Target.Address
    Else
      .Visible = False
    End If
  End With
 
 
  Dim myRange As Range
Dim cell As Range
Set myRange = Range("B2:B200")
    For Each cell In myRange
   
        If cell.Value < Date Then
            cell.Font.ColorIndex = 5
        ElseIf cell.Value > Date Then
            cell.Font.ColorIndex = 6
        End If
 
    Next

Men det giver også bare samme farve for alle, selv om nogle af datoerne i kolonne B2 er før i dag og nogle efter i dag, så det tyder på den ikke kan læse  værdien der ligger i en enkelte celle
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester