Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [VBA] Αλλαγή χρώματος κελιού ανάλογα με την τιμή του κελιού

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Κλειστό Θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 10-11-17, 01:40
Όνομα: Βασίλης
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-09-2017
Μηνύματα: 12
Προεπιλογή Αλλαγή χρώματος κελιού ανάλογα με την τιμή του κελιού

Καλησπέρα σας! Στο αρχείο που σας παρέχω θέλω από το φύλλο εργασίας ΑΝΑΦΟΡΑ, τα ΠΟΣΑ ΔΑΠΑΝΗΣ που θα μετακινούνται στο ΑΡΧΕΙΟ, να μετακινούνται με ένα συγκεκριμένο χρώμα ανάλογα με την τιμή που έχει το κελί π.χ αν το κελί έχει τιμή μεγαλύτερη των 10€, η τιμή που θα μεταφερθεί στο στο κελί του ΑΡΧΕΙΟΥ να έχει χρώμα κόκκινο.
Ο κώδικας που έχω γράψει με VBA μέχρι στιγμής, αλλάζει τα χρώματα που θέλω, αλλά κάθε φορά γίνεται όλο και πιο αργός διότι κάνει αναζήτηση των τιμών στο ΑΡΧΕΙΟ για τις τιμές που του έχω ορίσει να αλλάζει χρώμα. Στον κώδικα τις τιμές αυτές, τις ορίζω στο 'GEMISMA XROMATOS
Αυτό όμως που θέλω εγώ, είναι το χρώμα του κελιού στο οποίο θα μεταφερθεί η τιμή να αλλάζει την στιγμή που θα μεταφερθεί η τιμή, έτσι ώστε να γίνονται οι συγκρίσεις εκείνη την στιγμή.

Προς το παρών οι τιμές από το φύλλο ΑΝΑΦΟΡΑ, μεταφέρονται στο ΑΡΧΕΙΟ με αυτόν τον κώδικα:
Κώδικας:
'METAKINHSH SE ARXEIO
k = 4
Do While Worksheets("ΑΝΑΦΟΡΑ").Cells(k, 1) <> ""
  k = k + 1
Loop
k = k - 1

l = 2
Do While Worksheets("ΑΡΧΕΙΟ").Cells(l, 1) <> ""
  l = l + 1
Loop

For j = 9 To k
    Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 1) = Worksheets("ΑΝΑΦΟΡΑ").Cells(4, 2) 'ημερα
    Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 2) = Worksheets("ΑΝΑΦΟΡΑ").Cells(5, 2) 'ΜΗΝΑΣ
    Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 3) = Worksheets("ΑΝΑΦΟΡΑ.Cells(6, 2) 'ΗΜ/ΝΙΑ
    Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 4) = Worksheets("ΑΝΑΦΟΡΑ").Cells(7, 2) 'ΩΡΑ
    Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 5) = Worksheets("ΑΝΑΦΟΡΑ").Cells(8, 2) 'ΕΙΔΟΣ ΔΑΠΑΝΗΣ
    Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 6) = Worksheets("ΑΝΑΦΟΡΑ").Cells(9, 2) 'ΠΟΣΟ ΔΑΠΑΝΗΣ

Next j
Σε αυτό το σημείο προσπάθησα να βάλω τον κώδικα που θα παραθέσω παρακάτω, έτσι ώστε να μου γίνεται απευθείας η αλλαγή χρώματος αλλά ο κώδικας έβγαζε error :
Κώδικας:
 

    If Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 6) >= 10 Then Cell.Interior.ColorIndex = 3
    ElseIf Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 6) < 10 Then Cell.Interior.ColorIndex = 0
    ElseIf Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 6) <= 9.99 Then Cell.Interior.ColorIndex = 14
    ElseIf Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 6) <= 7 Then Cell.Interior.ColorIndex = 4
    ElseIf Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 6) < 4 Then Cell.Interior.ColorIndex = 0
    ElseIf Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 6) <= 4 Then Cell.Interior.ColorIndex = 45
    End If
Μπορείτε να με βοηθήσετε με το πρόβλημά μου;
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm ΜΗΝΙΑΙΑ ΕΞΟΔΑ.xlsm (96,2 KB, 39 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη bilakos26 : 11-11-17 στις 03:25.
  #2  
Παλιά 10-11-17, 12:40
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Βασίλη, δοκίμασε τον κώδικα:

Κώδικας:
'GEMISMA XROMATOS
    lRow = Sheets("ΑΡΧΕΙΟ").Range("F" & Rows.Count).End(xlUp).Row
    Set MR = Sheets("ΑΡΧΕΙΟ").Range("F2:F" & lRow)
    
    For Each cell In MR
        Select Case cell
        Case Is <= 4
            cell.Interior.ColorIndex = 45
        Case Is <= 7
            cell.Interior.ColorIndex = 4
        Case Is < 10
            cell.Interior.ColorIndex = 14
        Case Else
            cell.Interior.ColorIndex = 3
        End Select
    Next
Αντί για κώδικα θα μπορούσες να χρησιμοποιήσεις μορφοποίηση υπό όρους.
  #3  
Παλιά 10-11-17, 13:18
Όνομα: Βασίλης
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-09-2017
Μηνύματα: 12
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από kapetang Εμφάνιση μηνυμάτων
Καλησπέρα

Βασίλη, δοκίμασε τον κώδικα:

Κώδικας:
'GEMISMA XROMATOS
    lRow = Sheets("ΑΡΧΕΙΟ").Range("F" & Rows.Count).End(xlUp).Row
    Set MR = Sheets("ΑΡΧΕΙΟ").Range("F2:F" & lRow)
    
    For Each cell In MR
        Select Case cell
        Case Is <= 4
            cell.Interior.ColorIndex = 45
        Case Is <= 7
            cell.Interior.ColorIndex = 4
        Case Is < 10
            cell.Interior.ColorIndex = 14
        Case Else
            cell.Interior.ColorIndex = 3
        End Select
    Next
Αντί για κώδικα θα μπορούσες να χρησιμοποιήσεις μορφοποίηση υπό όρους.
Θα μπορούσε η αλλαγή χρώματος να γίνει την στιγμή που γίνεται η μετακίνηση στο κελί;; αντί να κάθεται και να ψάχνει όλα τα κελιά της σειράς; εννοώ να μπει στο σημείο του κώδικα 'METAKINHSH SE ARXEIO
  #4  
Παλιά 10-11-17, 14:26
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Πρόσθεσε μετά τη μετακίνηση και πριν από το άδειασμα τον κώδικα:

Κώδικας:
    Set cell = Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 6).Offset(-1)
    Select Case cell
    Case Is <= 4
        cell.Interior.ColorIndex = 45
    Case Is <= 7
        cell.Interior.ColorIndex = 4
    Case Is < 10
        cell.Interior.ColorIndex = 14
    Case Else
        cell.Interior.ColorIndex = 3
    End Select
  #5  
Παλιά 10-11-17, 16:31
Όνομα: Βασίλης
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-09-2017
Μηνύματα: 12
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από kapetang Εμφάνιση μηνυμάτων
Πρόσθεσε μετά τη μετακίνηση και πριν από το άδειασμα τον κώδικα:

Κώδικας:
    Set cell = Worksheets("ΑΡΧΕΙΟ").Cells(l + j - 9, 6).Offset(-1)
    Select Case cell
    Case Is <= 4
        cell.Interior.ColorIndex = 45
    Case Is <= 7
        cell.Interior.ColorIndex = 4
    Case Is < 10
        cell.Interior.ColorIndex = 14
    Case Else
        cell.Interior.ColorIndex = 3
    End Select
Ο κώδικας αυτός έκανε ακριβώς αυτό που ήθελα!
Είσαι φανταστικός!! Σε ευχαριστώ πολύ :D
  #6  
Παλιά 10-11-17, 17:07
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Να είσαι καλά!
Κλειστό Θέμα

Ετικέτες
excel, vba


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[VBA] Αλλαγή της τιμής ενός κελιού βάσει του χρώματος sakis297 Excel - Ερωτήσεις / Απαντήσεις 8 18-09-15 18:19
[Γενικά] καθορισμός της τιμής κελιού από την τιμή δύο άλλων GreekPowers Excel - Ερωτήσεις / Απαντήσεις 4 07-09-15 20:24
[VBA] Χρωματισμός κελιού ανάλογα την ώρα του συστήματος jose Excel - Ερωτήσεις / Απαντήσεις 7 31-03-12 08:09
[VBA] Αλλαγή χρώματος κελιού στην περίπτωση που devcon Excel - Ερωτήσεις / Απαντήσεις 5 30-03-11 15:20
[VBA] Αλλαγή χρώματος κελιού ytsiak Excel - Ερωτήσεις / Απαντήσεις 5 18-09-10 00:44


Η ώρα είναι 06:19.