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/6255-allagi-timis-kelioi-apo-lista-timon.html)

caudillo 10-02-23 15:05

Αλλαγή τιμής κελιού από λίστα τιμών
 
1 Συνημμένο(α)
Την καλησπέρα μου σε όλο το forum.
Έχω σχεδόν τελειώσει ένα αρχείο Excel που φτιάχνω, αλλά δεν μπορώ να καταφέρω να λειτουργήσει κάτι τελευταίο.
Συγκεκριμένα σε ένα φύλλο, επιλέγοντας το όνομα καθηγητή, εμφανίζονται τα τμήματα που διδάσκει σε διπλανή στήλη και ακριβώς δίπλα το μάθημα που κάνει σε κάθε τμήμα με βάση τύπο.
Έχω μια μακροεντολή με την οποία δημιουργώ τόσα αντίγραφα ενός άλλου φύλλου, όσα και τα μαθήματα του καθηγητή, μετονομάζοντας ταυτόχρονα κάθε φύλλο όπως και το μάθημα.
Εκείνο που θα ήθελα είναι να μπορεί η μακροεντολή να παίρνει το τμήμα από κάθε μάθημα και να το βάζει ως τιμή σε συγκεκριμένο κελί.
Θα το εκτιμούσα πάρα πολύ αν μπορούσε κάποιος να με βοηθήσει.

Υ.Γ.: Ο κώδικας που έχω χρησιμοποιήσει είναι ο παρακάτω:
Κώδικας:

Sub CreateSheetsFromList()
Dim ws As Worksheet, Ct As Long, c As Range
Set ws = Worksheets("ΠΡΟΤΥΠΟ")
Application.ScreenUpdating = False
For Each c In Sheets("ΕΠΙΛΟΓΗ").Range("K10:K30")
    If c.Value <> "" Then
        ws.Copy after:=Sheets(Sheets.Count)
        ActiveSheet.Name = c.Value
        Ct = Ct + 1
    End If
Next c
If Ct > 0 Then
    MsgBox Ct & " νέα αρχεία δημιουργήθηκαν για το τμήμα."
Else
    MsgBox "Δεν υπάρχουν μαθήματα στην λίστα."
End If
Application.ScreenUpdating = True
End Sub

Θα ανεβάσω και ένα μικρό δείγμα με τις θέσεις των κελιών που θέλω να ενημερωθούν.
Και πάλι ευχαριστώ πολύ.

caudillo 17-02-23 19:28

Καλησπέρα σε όλους.
Ως συμπλήρωμα στα δεδομένα του βιβλίου εργασίας μου και για να μην ξαναζητάω βοήθεια για το ίδιο θέμα, θα ήθελα να αναφέρω το εξής: κατά την εκτέλεση του κώδικα, αν ο καθηγητής κάνει το ίδιο μάθημα σε διαφορετικά τμήματα, ο κώδικας σταματάει να εκτελείται και δεν δημιουργεί τα υπόλοιπα φύλλα. Είναι και αυτό κάτι που χρειάζεται διόρθωμα αλλά δεν γνωρίζω πως να το διορθώσω.
Ευχαριστώ και περιμένω με ανυπομονησία τις προτάσεις σας.

kapetang 19-02-23 11:25

Καλημέρα

Ο κώδικας δίνει στα φύλλα, που δημιουργεί, το όνομα του μαθήματος.

Όταν ένας καθηγητής κάνει το ίδιο μάθημα σε πολλά τμήματα, κάποια στιγμή, ο κώδικας θα προσπαθήσει να δώσει σε ένα νέο φύλλο ένα όνομα που ήδη έχει δοθεί.

Αυτό προκαλεί «λάθος» και τη διακοπή του κώδικα.

Προτείνω στο όνομα του φύλλου να περιλαμβάνεται και το τμήμα (πχ Τμήμα_Μάθημα).

Πιθανόν όμως να θέλεις ένα φύλλο ανά μάθημα και όχι ένα ανά Τμήμα/Μάθημα.

Το αρχείο που ανέβασες είναι πολύ πρόχειρο (πχ δεν περιλαμβάνει το φύλλο «ΠΡΟΤΥΠΟ» και τον κώδικα) και δε διευκολύνει, όποιον θέλει να βοηθήσει, να κάνει τις αναγκαίες προσαρμογές και δοκιμές.

caudillo 22-02-23 14:33

Γιώργο ευχαριστώ για την απάντησή σου.
Έχω καταφέρει μέχρι στιγμής να ενημερώνω το κελί τμήματος με την χρήση INDEX και MATCH.
Μένει μόνο να κάνω τον κώδικα να εκτελείται όταν ο καθηγητής κάνει το ίδιο μάθημα σε πολλά τμήματα.
Θα προσπαθήσω να διορθώσω τον κώδικα με βάση την υπόδειξή σου - αν και δεν ελπίζω σε πολλά καθώς οι γνώσεις μου στην VBA απλώς ΔΕΝ...
Αν δεν καταφέρω κάτι θα ανεβάσω ένα καλύτερο δείγμα του βιβλίου.
Και πάλι σε ευχαριστώ.

kapetang 22-02-23 17:34

Να είσαι καλά και καλή συνέχεια.

caudillo 23-02-23 11:21

1 Συνημμένο(α)
Καλησπέρα σε όλους.
Μετά από αρκετές ώρες προσπαθειών και ψαξίματος στο internet, έχω φτάσει (νομίζω) πολύ κοντά στο τέλος. Αλλά μένουν ένα δυο θεματάκια να λυθούν.
Στο αρχείο που ανεβάζω και είναι πολύ αντιπροσωπευτικό του πραγματικού αρχείου, χρειάζομαι την βοήθειά σας σε δυο σημεία:
1) Κατά την δημιουργία των νέων φύλλων εργασίας κάποιες φορές δεν ενημερώνεται σωστά το κελί D14. Από ότι παρατήρησα αυτό γίνεται κυρίως σε τμήματα Γενικής
Παιδείας.
2) Στο φύλλο ΠΡΟΤΥΠΟ υπάρχει μια λίστα για τα ονόματα των μαθητών, τα οποία θα έπρεπε να ενημερώνονται με βάση το κελί D14 μέσω τύπων σε κάθε νέο φύλλο
εργασίας. Αυτό δεν συμβαίνει και δεν μπορώ να καταλάβω γιατί.
Νομίζω ότι λύνοντας αυτά τα δυο προβλήματα θα μπορεί το αρχείο να είναι λειτουργικό.
Ευχαριστώ πολύ για τον χρόνο και την βοήθειά σας.
Ελπίζω στις προτάσεις σας.
Καλή συνέχεια.

caudillo 24-02-23 13:56

Καλησπέρα.
Όσον αφορά το πρώτο από τα δυο προβλήματα που ανέφερα στο τελευταίο μου μήνυμα, το έλυσα απλά αλλάζοντας λίγο τον τύπο του κελιού D14 στο φύλλο εργασίας ΠΡΟΤΥΠΟ.
Απομένει το δεύτερο πρόβλημα, όπου δηλαδή σε κάθε νέο φύλλο που δημιουργείται και ανάλογα με την τιμή στο κελί D14 θα έπρεπε να ενημερώνεται το φύλλο με τα σωστά ονόματα μαθητών του τμήματος.
Αν καταλαβαίνω σωστά πρέπει να διορθωθεί ο τύπος της στήλης G στο φύλλο εργασίας ΜΑΘΗΤΕΣ ώστε να "βλέπει" κάθε φορά κάθε νέο φύλλο. Από τα λίγα που γνωρίζω δεν νομίζω ότι μπορεί να γίνει κάτι τέτοιο με τύπο, οπότε μάλλον η επόμενη λύση είναι η VBA. Δεν θα με πείραζε να δημιουργηθεί ένας δεύτερος κώδικας που θα ενεργοποιώ με κάποιο κουμπί, μετά την δημιουργία των νέων φύλλων ώστε να ενημερωθούν οι μαθητές. Το θέμα είναι πως οι νηπιακές μου γνώσεις στην VBA δεν βοηθούν και γι' αυτό ελπίζω στην δική σας βοήθεια.
Να είστε καλά.

kapetang 24-02-23 14:38

1 Συνημμένο(α)
Καλησπέρα

Κάνε δοκιμές στο συνημμένο.

Έχω κάνει προσαρμογές στο φύλλο "ΕΠΙΛΟΓΕΣ", το "ΠΡΟΤΥΠΟ" και στον κώδικα.

Η προσαρμογή έγινε πριν από το τελευταίο σου μήνυμα και ελπίζω να σε καλύπτει.

caudillo 24-02-23 17:16

Γιώργο σ' ευχαριστώ πολύ. Είσαι ο νέος μου ήρωας!!!
Με μια πρώτη δοκιμή όλα φαίνονται να δουλεύουν καλά.
Μόνο ένα θεματάκι παρατήρησα. Αν το μάθημα το διδάσκουν δυο εκπαιδευτικοί, όπως τα εργαστηριακά μαθήματα των ΕΠΑΛ, στο κελί D16 εμφανίζεται μόνο ο ένας. Πρέπει να "πειραχτεί" ο κώδικας ή με μια Vlookup στο κελί μπορεί να διορθωθεί το θέμα;
Όπως και να έχει η βοήθειά σου ήταν και πάλι πολύτιμη.
Να είσαι καλά.

kapetang 25-02-23 07:27

1 Συνημμένο(α)
Καλημέρα

Στο συνημμένο, στο κελί d16 του φύλλου "ΠΡΟΤΥΠΟ", έβαλα τύπο και προσάρμοσα τον κώδικα να μη του δίνει τιμή από το φύλλο "ΕΠΙΛΟΓΕΣ".


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

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


Search Engine Optimization by vBSEO 3.3.2