Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Μορφοποίηση] Μορφοποίηση για όποιο κελί δεν περιέχει συγκεκριμένη τιμή αλλά όχι για τα κενά (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/3876-morfopoiisi-gia-opoio-keli-den-periexei-sygkekrimeni-timi-alla-oxi-gia-ta-kena.html)

Skakinen 15-10-15 16:40

Μορφοποίηση για όποιο κελί δεν περιέχει συγκεκριμένη τιμή αλλά όχι για τα κενά
 
1 Συνημμένο(α)
Καλησπέρα σε όλους!!

Ψάχνω τρόπο να μορφοποιούνται όσα κελιά περιέχουν οτιδήποτε άλλο εκτός από το ''x'' κείμενο αλλά αυτή η μορφοποίηση να μη γίνεται όσο τα κελιά είναι κενά.

Λεπτομέρειες στο συνημμένο.

Ευχαριστώ!!

Χρήστος 15-10-15 17:53

Δες το συνημμένο που είναι στο post #4

Spirosgr 15-10-15 19:36

Καλησπέρα
Κατ' αρχήν Χρήστο,
σε αυτό το σημείο:

Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _
Formula1:="=" and(2005;0)

Ο κώδικας, είναι λάθος και δημιουργεί προβλήματα, στην οθόνη του υπολογιστή...
Προτείνω, να μην χρησιμοποιήσετε το συνημμένο και να το διορθώσεις...

Τώρα
Μόνο αυτό θα χρειαστεί:

=AND(E4<>$E$2;E4<>"")

όπου $E$2 ένα κελί, με το έτος, που θα εξαιρείται

Χρήστος 15-10-15 19:48

Φίλε Σπύρο....ευχάριστο που "μελετάς" τους προτεινόμενους κώδικες...όμως ο κώδικας που αναφέρεσαι αποτελεί "πρόχειρο" για μένα ... δεν εκτελείται στο αρχείο μου....

Ο κώδικας που τρέχει είναι αυτός:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim fCell As Range
If Not Intersect(Target, Range("E4:E13")) Is Nothing Or Not Intersect(Target, Range("K2:K4")) Is Nothing Then

For Each fCell In Range("E4:E13")
fCell.Interior.ColorIndex = 0
If fCell.Value <> Range("K2").Value Then
fCell.Interior.ColorIndex = Range("K3").Value
End If
If fCell.Value = 0 Then
fCell.Interior.ColorIndex = Range("K4").Value
End If
Next fCell
End If
End Sub

Σ' αυτόν το κώδικα....κάθε παρατήρηση καλοδεχούμενη...και θα με κάνει καλύτερο.....

Επαλήθευσέ το σε παρακαλώ ώστε να επανέλθεις!! Είμαι σίγουρος για την καλή σου πρόθεση!!

Skakinen 15-10-15 20:51

Κατ'αρχάς ευχαριστώ όλους για τις απαντήσεις!
Επίσης απολογούμαι διότι παρέλειψα να διευκρινίσω ότι δεν θέλω λύσεις με κώδικα οπότε κάποιοι φίλοι ξόδεψαν άδικα τον πολύτιμο χρόνο τους. Ζητώ συγνώμη.


Η λύση του Σπύρου είναι κατά 99,99% αυτό που έψαχνα.
Απλώς αντικατέστησα το $E$2 με το 2005 (το έτος που θέλω να αποκλείσω) και ο τύπος
=AND(E4<>2005;E4<>"")
δουλεύει μια χαρά!!

Ευχαριστώ!!

Χρήστος 15-10-15 21:12

Μόνο όφελος προκύπτει για όλους μας...Να σαι καλά....

Spirosgr 15-10-15 21:25

Χρήστο
Σαφώς και είδα τι «τρέχει» και τι όχι...
Παρ' όλο που ο κώδικας, δεν εκτελείται, είναι ενεργός
και επηρεάζει, ότι «θέλει»...
Αν έχουμε κώδικες, που δεν θέλουμε να εκτελούνται, αλλά για κάποιο λόγο
τους θέλουμε να υπάρχουν ( just in case ) τους απενεργοποιούμε, κάνοντας τον κώδικα, σχόλιο ...
Η ασφάλεια των μακροεντολών άλλωστε, υπάρχει για να εμποδίζει μια σειρά σφαλμάτων...
Ένα σοβαρό σφάλμα είναι κι αυτό.
Κάνοντας tests, ξεχνάμε κάποιο κώδικα (συνήθως με σφάλματα) και «μπούμ» αποχαιρετάμε πχ την κάρτα γραφικών μας...

Διονύση
Κάποια στιγμή, θα πρέπει να καταλάβετε, τον ρόλο και την σημασία, ενός κελιού link...
Αν αύριο αλλάξει (για κάποιο x λόγο -και ποτέ μην λες ποτέ-) το 2005,
δεν είναι καλύτερα να αλλάξει η τιμή σε ένα κελί, παρά να ψάχνεις σε τύπους και να αλλάζεις τύπους;

Χρήστος 15-10-15 21:38

Σπύρο έχεις δίκιο....

Skakinen 15-10-15 22:12

Παράθεση:

Αρχική Δημοσίευση από Spirosgr (Μήνυμα 22180)
Διονύση
Κάποια στιγμή, θα πρέπει να καταλάβετε, τον ρόλο και την σημασία, ενός κελιού link...
Αν αύριο αλλάξει (για κάποιο x λόγο -και ποτέ μην λες ποτέ-) το 2005,
δεν είναι καλύτερα να αλλάξει η τιμή σε ένα κελί, παρά να ψάχνεις σε τύπους και να αλλάζεις τύπους;

Δεν μπορώ παρά να συμφωνήσω με το σκεπτικό σου.

Spirosgr 15-10-15 22:26

Να ένας κώδικας που κάνει μορφοποίηση:

Ό,τι δεν είναι 2005 ή κενό «βάφεται» κίτρινο...

Option Explicit
_____________________
Const iYear = "2005"
Const iColor = "6"

_____________________
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, c As Range
'Περιοχή που θα μορφοποιηθεί, ονομασία iRange
Set rng = Range("iRange")
'Έλεγχος
If Intersect(Target, rng) Is Nothing Then Exit Sub
'Loop
For Each c In rng
If c.Value <> iYear And c.Value <> vbNullString Then
c.Interior.ColorIndex = iColor
Else
c.Interior.ColorIndex = xlNone
End If
Next c
End Sub

Σημείωση:
1
Αν αλλάξει το 2005 ή το χρώμα αλλάζουν μόνο οι σταθερές.
Δεν «ψάχνω» στον κώδικα να δω που τα έγραψα...
2
Να επαναλάβω, ότι δεν χρειάζεται κώδικας, για κάτι τόσο απλό...


Η ώρα είναι 07:52.

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


Search Engine Optimization by vBSEO 3.3.2