Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Excel zmiana koloru kolumn w zależności od daty

Richter 30 Jul 2009 14:45 6386 3
  • #1
    Richter
    Level 31  
    Witam mam arkusz w exelu w nim numery telefonów i daty końca umowy. Są wszystkie daty kolorem żółtym zaznaczone. Jak zrobić żeby np. gdy zostało 3miesiące wszystkie daty były na fioletowo a gdy do końca został miesiąc na przykład na czerwono? Dobrze było by gdyby cały wiersz był na dany kolor łatwo będzie widzieć jak się zmienia w zależności od daty.
    Czy takie makro będzie dobre?
    Code:
    Sub Test()
    
    Application.ScreenUpdate=False
    For x=1 to 65536
    If Cells(x,1)="" Then Exit For
    Select Case Cells(x,1)
    Case 1
    a="numer_koloru1"
    ......
    End Select
    Range("1:1").Offset(x,0).Interior.ColorIndex = a
    Next x
    Application.ScreenUpdate=True
    End Sub
    Ethernet jednoparowy (SPE) - rozwiązania w przemyśle. Szkolenie 29.09.2021r. g. 11.00 Zarejestruj się za darmo
  • Helpful post
    #2
    adamas_nt
    Moderator of Programming
    Mi wyszło tak - już zmieniłem :)

    Edit: Wklej w kod arkusza
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    
    Application.ScreenUpdating = False

    For x = 1 To 65536
        If Cells(x, 1) = "" Then Exit For
        Select Case Cells(x, 1) - Date 'odejmujemy daty i w zależności od wyniku
            Case 0 To 30: Rows(x).Interior.ColorIndex = 3
            Case 31 To 90: Rows(x).Interior.ColorIndex = 47
            Case Else: Rows(x).Interior.ColorIndex = 0
                Cells(x, 1).Interior.ColorIndex = 6 'i cała reszta na żółto
        End Select
    Next x

    Application.ScreenUpdating = True
    End Sub

    Kolorów nie znam na pamięć. Można sprawdzić: zaznacz komórkę, wybierz kolor i uruchom
    Code:
    Sub cotozakolor()
    
    MsgBox ActiveCell.Interior.ColorIndex
    End Sub
  • #3
    walek33
    Level 28  
    Można też wykorzystać sposób kolegi marek003 przedstawiony tutaj.
  • #4
    ask.m
    Level 11  
    Wszystko fajnie tylko jak zrobić żeby makro wykonywało się automatycznie przy uruchomieniu pliku? W obecnej postaci jeśli nic nie zmienię/dopisze/zatwierdzę w danej kolumnie to kolor sam się nie zmieni bo makro się nie wykona.
    Druga sprawa- potrzebuje podświetlać dwie kolumny. Obecnie podświetlam jedną ale nie mogę sobie poradzić z koniunkcją. Mój kod wygląda obecnie tak:
    Code:

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.ScreenUpdating = False

    For x = 4 To 65
        If Cells(x, 11) = "" Then Exit For
        Select Case Cells(x, 11) - Date
            Case Is < 0: Cells(x, 2).Interior.ColorIndex = 4
            Case 0 To 7: Cells(x, 2).Interior.ColorIndex = 3
            Case 8 To 14: Cells(x, 2).Interior.ColorIndex = 45
            Case Else: Cells(x, 2).Interior.ColorIndex = 0
                Cells(x, 2).Interior.ColorIndex = 6 'i cała reszta na żółto
        End Select
    Next x

    Application.ScreenUpdating = True
    End Sub


    Z góry dzięki za sugestie :)

    Dodano po 1 [godziny] 19 [minuty]:

    OK. co do pierwszego, doszedłem do tego, że kod ma być umieszczony w sekcji Open zamiast Change :) ale co z tą koniunkcją?