| Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#1
| |||
| |||
|
Ποιό είναι το λάθος που έχει ο κώδικας ( το αρχείο είναι απο το διαδίκτυο) και δεν λειτουργεί; Ευχαριστώ ! |
|
#2
|
|
Το σωστό είναι: Κώδικας: Sub SumBOLDRED()
Dim LastRow As Long, i As Long, MySum As Double
LastRow = Φύλλο1.Cells(Rows.Count, 1).End(xlUp).Row
MySum = 0
For i = 1 To LastRow
If IsNumeric(Φύλλο1.Cells(i, 1)) And _
Φύλλο1.Cells(i, 1).Font.Bold = True And _
Φύλλο1.Cells(i, 1).Font.ColorIndex = 3 Then
MySum = MySum + Cells(i, 1)
End If
Next i
Φύλλο1.Range("k1").Value = MySum
End Sub
(Θα προτιμούσα να αλλαχθεί με κάτι σαν... Sht1) **Αν θέλουμε να «τρέχει» σε κάθε ενεργό φύλλο, το αλλάζουμε με ActiveSheet. Το σφάλμα, είναι στην γραμμή κώδικα, που βρίσκει την τελευταία γραμμή με «γεμάτο» κελί. αντί Κώδικας: LastRow = Range("A1:A20").End(xlUp).Row
Κώδικας: LastRow = Φύλλο1.Cells(Rows.Count, 1).End(xlUp).Row διότι επιτρέπει μεγάλους αλλά και δεκαδικούς αριθμούς. |
|
#3
| |||
| |||
|
Καλησπέρα Και μια πρόταση, με συνάρτηση, στο συνημμένο. Τη θεωρώ πιο ευέλικτη. Αθροίζει τα κελιά που η γραμματοσειρά είναι είτε Bold είτε Red είτε και τα δύο. Με μια μικρή αλλαγή στον κώδικα μπορεί να αθροίζει μόνο τα κελιά που η γραμματοσειρά είναι ταυτόχρονα και Bold και Red. |
|
#4
| |||
| |||
|
Ευχαριστώ πολύ ! Να είστε καλά ! |
|
#5
| |||
| |||
|
Καλημέρα ! Σπύρο τι εννοείς όταν λες ότι βρίσκει την τελευταία γραμμή με << γεμάτο>> κελί; Ευχαριστώ πολύ! |
|
#6
|
|
Καλημέρα. Η έκφραση: Cells(Rows.Count, 1).End(xlUp).Row που σε «ελεύθερη» μετάφραση γίνεται: κελιά(γραμμές.μέτρησε, στην στήλη 1).πήγαινε στο τέλος των γραμμών(και ανέβα προς τα πάνω).γραμμή δίνεται σε μια μεταβλητή πχ LastRow = την οποία ορίζουμε ως Long (Dim LastRow As Long) να είναι δηλαδή μεγάλος ακέραιος και βρίσκει την τελευταία γραμμή μιας στήλης που έχει δεδομένα (*βλέπε εικόνα) Στην προκειμένη περίπτωση, θα επιστρέψει το 20 (γραμμή 20) για να το χρησιμοποιήσουμε στον κώδικα μας και να πάρουμε την τιμή 200 για παράδειγμα ή Cells(Rows.Count, 1).End(xlUp).Row+1 για να βάλουμε κάτι άλλο στο αμέσως πιο κάτω κενό κελί (γραμμή 21) ή ότι άλλο ανάλογα με τις ανάγκες του κώδικα που χτίζουμε. Η μέθοδος End(xlUp) μέσα στην έκφραση, μας εξασφαλίζει το σωστό αποτέλεσμα, καθώς σε σχέση με το αντίστοιχο End(xlDown) θα παραβλέψει τα κενά κελιά της στήλης. θα πάει στον πάτο του φύλλου και ανεβαίνοντας, θα «τρακάρει» στο κελί της γραμμής 20, πράγμα που είναι το ζητούμενο, σε αντίθεση με το End(xlDown) που θα έδινε γραμμή 9, που δεν είναι το επιθυμητό. Ακόμα Με όμοιο τρόπο, μπορούμε να έχουμε και την τελευταία γεμάτη στήλη μιας περιοχής, με την έκφραση: LastCol = Cells(1, Columns.Count).End(xlToLeft).Column και εδώ το LastCol ορίζεται ως Long |
|
#7
| |||
| |||
|
Ευχαριστώ πολύ !
|
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| Εργαλεία Θεμάτων | |
| Τρόποι εμφάνισης | |
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [ Ερωτήματα ] Bold | devcon | Access - Ερωτήσεις / Απαντήσεις | 9 | 23-09-11 17:26 |
Η ώρα είναι 22:33.


Αλλαγή σε γραμμικό τρόπο

