Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Αλλαγή χρώματος κελιού (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/733-allagi-xromatos-kelioi.html)

ytsiak 17-09-10 21:18

Αλλαγή χρώματος κελιού
 
1 Συνημμένο(α)
καλησπερα σας
χρειαζομαι λιγο βοηθεια
εχω ενα αρχειο και θελω να αλλαζουν τα χρωματα καποιων συγκεκριμενων κελιων οταν τηρουνται η προυποθεσεις..το θεμα ειναι οτι ο κωδικας που εχω γραψει αφορα ενα κελι ενω εγω θελω να γινει σε 105...ελπιζω να μην πρεπει να τον γραψω 105 φορες :confused1:
Σας ανεβασα και ενα συνημενο για να καταλάβετε ακριβως τι εννοω

If Sheets("sheet2").Range("b1") > 0 Then
Range("a1").Interior.ColorIndex = 3
Else
Range("a1").Interior.ColorIndex = 4
End If

ευχαριστω προκαταβολικα!

kapetang 17-09-10 23:38

Αν αντιγράψεις την παρακάτω μακροεντολή στο Module1 νομίζω ότι θα λυθεί το πρόβλημα.
Κώδικας:

Sub macroColor()
    Dim i As Integer
    For i = 1 To 105
        If Sheets("sheet2").Cells(i, 2).Value > 0 Then
            Sheets("sheet1").Cells(1, i).Interior.ColorIndex = 3
        Else
            Sheets("sheet1").Cells(1, i).Interior.ColorIndex = 4
        End If
    Next
End Sub

Φιλικά/Γιώργος

Tasos 17-09-10 23:41

Καλησπέρα Γιάννη!
Αν κατάλαβα καλά, θέλεις αν οι τιμές της στήλης B στο Sheet2 είναι μεγαλύτερες του μηδενός (0)
να χρωματίζονται τα κελιά της γραμμής 1 στο Sheet1 ξεκινώντας από το Α1.

Δεν θα χρειάζεται να χρησιμοποιήσεις VBA για να βάψεις τα κελιά σου.
Χρησιμοποίησε τη μέθοδο Μορφοποίηση υπό όρους.

  • Επίλεξε τα 105 κελια της σειράς 1
  • Κατόπιν, στο διάλογο Mορφοποίηση υπο όρους (από το μενού Μορφή >
    μορφοποίηση υπο όρους)
    , πέρασε τον παρακάτω τύπο και δώσε το χρώμα
    που θέλεις να εμφανιστεί:
=INDEX(Sheet2!$B:$B;COLUMN(A1);ROW(A1))
Καλή συνέχεια!

Τάσος

ytsiak 17-09-10 23:50

Καταρχας σας ευχαριστω

φιλε τασο σωστα καταλαβες..αλλα θελω συγκεκριμενα Α1:Ο7..Γινεται ετσι?
Kapetang το δοκιμασα ετσι αλλα μπα..

ytsiak 18-09-10 00:41

Ολα ενταξει ,μορφοποιησα λιγο τον τυπο τασο..ευχαριστω πολυ !

Tasos 18-09-10 00:44

Γιάννη, μόλις πρόσεξα ότι αναφέρεις στο προφίλ σου Έκδοση Office 2002!
Μάλλον το δοκίμασες σε έκδοση 2007+. Διαφορετικά δεν θα σου δούλευε.

Για Excel < 2007 θα πρέπει να οριστεί ένα όνομα για την περιοχή B:B (Sheet2) πχ. Column_B
επειδή οι αναφορές σε άλλα φύλλα ή βιβλία δεν υποστηρίζονται στη μορφοποίηση υπό όρους.

Επίσης, επειδή πρόκειται για αντιματάθεση μιας μόνο στήλης (B:B),
ο τύπος θα μπορούσε να απλοποιηθεί έτσι: =INDEX(Column_B;COLUMN(A1)) αν πρόκειται για μια γραμμή.

Στο ζητούμενο σου (Α1:Ο7) ο τύπος στη μορφοποίηση υπό όρους είναι:

=INDEX(Column_B;COLUMN(A$1)+COLUMN($O$1)*(ROW(A1)-1))

Ελπίζω να έγινε!

Τάσος


Η ώρα είναι 04:33.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2