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

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

Κλειστό Θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 24-01-11, 14:52
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 08-02-2010
Περιοχή: ΠΑΤΡΑ
Μηνύματα: 31
Προεπιλογή Αλλαγή χρώματος κελιών υπό προϋποθέσεις με vb

Καλημέρα σε όλους,

Λοιπόν στο πρόβλημα … έχω ένα αρχείο με περίπου 22.000 – 25.000 γραμμές (μία με data & μία κενή και ενδιάμεσα και άλλες κενές όπως θα δείτε και στο συνημμένο) και τρείς στήλες στο Φύλλο1, αυτό γίνεται με copy paste από άλλο αρχείο που παράγει ένα πρόγραμμα εμπορικής διαχείρισης.
Με vb έχω την δυνατότητα τα κελιά στην στήλη C να χρωματίζονται ανάλογα με το υπόλοιπό τους . Το ζητούμενο είναι εκτός από το κελί της στήλης C να χρωματίζονται και τα διπλανά στις στήλες a & b κάποιες προσπάθειες που έκανα μου επέστεφαν χρωματισμό σε όλη την γραμμή … Σημειωτέον ότι το αρχείο που προκύπτει θα το δουλεύουν τόσο σε exel 2003 όσο και σε 2007 .
Υπάρχει κάποιος τρόπος ?

Ευχαριστώ,

Γιώργος
  #2  
Παλιά 24-01-11, 14:56
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 08-02-2010
Περιοχή: ΠΑΤΡΑ
Μηνύματα: 31
Προεπιλογή

Και το ξεχασμένο αρχείο ...
Συνημμένα Αρχεία
Τύπος Αρχείου: zip TRAFFIC LIGHT_test_03.zip (13,1 KB, 103 εμφανίσεις)
  #3  
Παλιά 24-01-11, 18:12
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 19-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 758
Προεπιλογή

Φίλε Γιώργο
εγώ θα σου πρότεινα τον παρακάτω κώδικα
Κώδικας:
Private Sub CommandButton1_Click()
Dim Cell, Rng As Range
For Each Cell In Range("C1:C" & Range("C65536").End(xlUp).Row)
'επιλέγω τα κελιά της στήλης C
    If WorksheetFunction.IsNumber(Cell) Then
    'αν το κελί στην C είναι αριθμός
        Set Rng = Range("A" & Cell.Row & ":" & "C" & Cell.Row)
        'φτιάχνουμε το range που θα μορφοποιήσουμε. Στήλες A έως C
        Select Case Cell.Value
            Case Is < 0
            'όταν η τιμή στό κελί είναι μικρότερη από το 0 να γίνεται ΜΠΛΕ
                Rng.Interior.Color = vbBlue
            'με λευκούς χαρακτήρες
                Rng.Font.Color = vbWhite
            Case Is = 0
            'όταν η τιμή στό κελί είναι = 0 το χρώμα να αλλάζει σε ΚΟΚΚΙΝΟ
                Rng.Interior.Color = vbRed
            'με λευκούς χαρακτήρες
                Rng.Font.Color = vbWhite
            Case Is = 1
            'όταν η τιμή στό κελί είναι = 1 το χρώμα να αλλάζει σε ΚΙΤΡΙΝΟ
                Rng.Interior.Color = vbYellow
            Case Is > 1
            'όταν η τιμή στο κελί είναι > = 2 το χρώμα να αλλάζει σε ΠΡΑΣΙΝΟ
                Rng.Interior.Color = vbGreen
        End Select
    End If
Next Cell
Set Rng = Nothing
End Sub
  #4  
Παλιά 24-01-11, 22:52
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 08-02-2010
Περιοχή: ΠΑΤΡΑ
Μηνύματα: 31
Smile

Θανάση καλησπέρα,

ok είναι τέλειο,σ΄ ευχαριστώ πάρα πολύ.

______
PS
Με κάθε επιφύλαξη, μήπως είναι εύκολο όταν στην στήλη b υπάρχει η καταχώρηση: «Σύνολα Σελίδας», «Σε Μεταφορά», «Από Μεταφορά», «Γενικά Σύνολα» να μην γίνεται μορφοποίηση αλλά να παραμένουν λευκά τα κελιά ? αν είναι σχετικά εύκολο είναι ευπρόσδεκτο, αν παρουσιάζει δυσκολίες τότε το ξεχνάμε.
Και πάλι ένα μεγάλο ευχαριστώ.

Φιλικά

Γιώργος
  #5  
Παλιά 25-01-11, 00:28
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 19-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 758
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από GEORGE1 Εμφάνιση μηνυμάτων
... μήπως είναι εύκολο όταν στην στήλη b υπάρχει η καταχώρηση: «Σύνολα Σελίδας», «Σε Μεταφορά», «Από Μεταφορά», «Γενικά Σύνολα» να μην γίνεται μορφοποίηση αλλά να παραμένουν λευκά τα κελιά ?...
Γιώργο,
στον κώδικα που σου έδωσα, βάζεις ακριβώς πριν από την End Select την παρακάτω If (7 γραμμές) για κενό γέμισμα "xlNone" και αυτόματο χρώμα γραμματοσειράς "0".
Κώδικας:
    If Rng.Cells(1, 2) = "Σύνολα Σελίδας" Or _
       Rng.Cells(1, 2) = "Σε Μεταφορά" Or _
       Rng.Cells(1, 2) = "Από Μεταφορά" Or _
       Rng.Cells(1, 2) = "Γενικά Σύνολα" Then
                       Rng.Interior.ColorIndex = xlNone
                       Rng.Font.ColorIndex = 0
     End If
ΥΓ. Αν μας ανέβαζες ένα αρχείο όπως το βγάζει το πρόγραμμα εμπορικής διαχείρισης που λες, αν είναι txt ή csv ή xls υπάρχουν καλύτεροι τρόποι κάνοντας εισαγωγή δεδομένων αντί αντιγραφή επικόλληση.
  #6  
Παλιά 25-01-11, 11:21
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 08-02-2010
Περιοχή: ΠΑΤΡΑ
Μηνύματα: 31
Smile

Παράθεση:
Αρχική Δημοσίευση από gr8styl Εμφάνιση μηνυμάτων
Γιώργο,
στον κώδικα που σου έδωσα, βάζεις ακριβώς πριν από την End Select την παρακάτω If (7 γραμμές) για κενό γέμισμα "xlNone" και αυτόματο χρώμα γραμματοσειράς "0".
Κώδικας:
    If Rng.Cells(1, 2) = "Σύνολα Σελίδας" Or _
       Rng.Cells(1, 2) = "Σε Μεταφορά" Or _
       Rng.Cells(1, 2) = "Από Μεταφορά" Or _
       Rng.Cells(1, 2) = "Γενικά Σύνολα" Then
                       Rng.Interior.ColorIndex = xlNone
                       Rng.Font.ColorIndex = 0
     End If
ΥΓ. Αν μας ανέβαζες ένα αρχείο όπως το βγάζει το πρόγραμμα εμπορικής διαχείρισης που λες, αν είναι txt ή csv ή xls υπάρχουν καλύτεροι τρόποι κάνοντας εισαγωγή δεδομένων αντί αντιγραφή επικόλληση.
Θανάση Καλημέρα,

και πάλι ένα ΜΕΓΑΛΟ ΕΥΧΑΡΙΣΤΩ

Το αρχείο που ανέβασα είναι αυτό που έβγαλε η εμπορική διαχείριση απλά έχω σβήσει 22.000 γραμμές για να μην είναι τεράστιο ...

Φιλικά

Γιώργος
  #7  
Παλιά 25-01-11, 11:50
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα
Φίλε Θανάση, επειδή η μορφοποίηση που δημιουργεί ο πρόσθετος κώδικάς σου δεν εξαρτάται από τις τιμές των κελιών της στήλης C, έχω τη γνώμη ότι θα πρέπει να είναι μετά τη δομή Select ...End Select και όχι μέσα σ’ αυτήν.
Φιλικά/Γιώργος
  #8  
Παλιά 25-01-11, 12:06
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 08-02-2010
Περιοχή: ΠΑΤΡΑ
Μηνύματα: 31
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από kapetang Εμφάνιση μηνυμάτων
Καλημέρα
Φίλε Θανάση, επειδή η μορφοποίηση που δημιουργεί ο πρόσθετος κώδικάς σου δεν εξαρτάται από τις τιμές των κελιών της στήλης C, έχω τη γνώμη ότι θα πρέπει να είναι μετά τη δομή Select ...End Select και όχι μέσα σ’ αυτήν.
Φιλικά/Γιώργος
Καλημέρα συνονόματε,

Αν βοηθά : Όλα έχουν σαν κριτήριο την αναφερόμενη αξία στην στήλη C.
Ανάλογα με την αξία αυτή, γίνεται η αλλαγή Χρώματος κελιού και γραμματοσειράς.

Φιλικά

Γιώργος
  #9  
Παλιά 25-01-11, 16:15
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Συνονόματε Γιώργο, αν κατάλαβα καλά, η μορφοποίηση των γραμμών με σύνολα («Σύνολα Σελίδας», «Σε Μεταφορά», «Από Μεταφορά», «Γενικά Σύνολα») η μορφοποίηση δεν εξαρτάται από την τιμή της στήλης C (<0, 0,1 >1), γι’ αυτό πιστεύω ότι ο σχετικός κώδικας πρέπει να είναι κάτω από τη δομή Select.
Πάντως, στο σύνολο σχεδόν των περιπτώσεων ο κώδικας του φίλου Θανάση δίνει σωστά αποτελέσματα (οπότε μπορείς να τον χρησιμοποιείς) και αν χρειαστεί κάποια τροποποίηση πιστεύω θα την κάνει ο ίδιος.

Φιλικά/Γιώργος
  #10  
Παλιά 25-01-11, 16:40
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα σε όλους!

Η Excel 2003 μας δίνει 3 μορφοποιήσεις υπό όρους + την στάνταρτ μορφοποίηση του κελιού δηλ. 4 στο σύνολο.
Στην περίπτωση του Γιώργου, μπορούμε να τις χρησιμοποιήσουμε και σε συνδυασμό με λίγο κώδικα VBA να φτάσουμε στο επιθυμητό αποτέλεσμα.

Μπορείτε να δείτε αυτή την προσέγγιση στο συνημμένο παράδειγμα παρακάτω.

Φιλικά

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: xls TRAFFIC_LIGHT.xls (47,0 KB, 153 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Κλειστό Θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Αλλαγή χρώματος σε φόρμα Αντώνης Access - Ερωτήσεις / Απαντήσεις 2 03-04-16 09:24
[VBA] Msgbox αλλαγή μεγέθους γραμματοσειράς και χρώματος anestaki Excel - Ερωτήσεις / Απαντήσεις 1 25-10-12 17:40
[ Φόρμες ] Αλλαγή χρώματος φόντου σε εγγραφή apostolos Access - Ερωτήσεις / Απαντήσεις 2 01-02-11 00:10
[VBA] Αλλαγή χρώματος κελιού ytsiak Excel - Ερωτήσεις / Απαντήσεις 5 18-09-10 01:44


Η ώρα είναι 09:35.