Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Εισαγωγή αδειών με UserForm (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/2207-eisagogi-adeion-me-userform.html)

Flashgordon61 25-11-12 11:29

Εισαγωγή αδειών με UserForm
 
Καλημέρα σε όλους
Με βάση το αρχείο του Τάσου στο θέμα http://www.ms-office.gr/forum/excel-...a-adeion.html] έκανα ένα αρχείο για καταγραφή των αδειών για το έτος 2013.
Επειδή το αρχείο είναι μεγάλο πρόσθεσα και την δυνατότητα επισήμανσης (Γραμμής-Στήλης-Κελιού) όπως περιγράφεται στα Χρήσιμα αρχεία & παραδείγματα http://www.ms-office.gr/forum/excel-...oy-kelioi.html .
Για τον ίδιο λόγο (το αρχείο είναι μεγάλο) σκέφθηκα αν είναι δυνατό η εισαγωγή των αδειών να γίνεται με UserForm [A = Άδεια εργασίας , I = Ιατρική Άδεια (Ασθένεια) , E = Ειδική Άδεια (Εγκυμοσύνης , Λοχείας , για τα παιδιά κλπ…)]
Σχεδίασα το UserForm χωρίς να βάλω τον κώδικα (δεν ξέρω αν το control MonthView κάνει για αυτή τη δουλειά).
Παρακαλώ την βοήθεια των ειδικών.

Γιώργος

Flashgordon61 25-11-12 11:32

1 Συνημμένο(α)
Το αρχείο που ξέχασα να επισυνάψω!!!!!!!!!

Thanosp 25-11-12 17:09

1 Συνημμένο(α)
Καλησπέρα σε όλους
Γιώργο κοίτα το συνημμένο
Θανάσης

Flashgordon61 25-11-12 18:12

Φίλε Θανάση σ’ ευχαριστώ πολύ :thanks::thanks::thanks:
Είναι σχεδόν αυτό που ζητούσα.
Αν στο UserForm προστεθεί και ένα CommandButton που να κάνει απαλοιφή (διαγραφή) των σαββατοκύριακων & εορτών θα άγγιζε την τελειότητα.
Σε κάθε περίπτωση , μου έλυσες τα χέρια.:011::011::011:

Και πάλι σ΄ ευχαριστώ.

Γιώργος

Thanosp 26-11-12 12:46

1 Συνημμένο(α)
Καλημέρα σε όλους
Γιώργο γειά σου, έχω κάνει μια προσπάθεια κοίτα το συνημμένο και τα λέμε

xristos 26-11-12 13:36

Φίλοι μου γειά σας.
Πράγματι είναι πολύ ωραίο το πρόγραμμα και απλό
Έκανα μια δοκιμή και το ΥΠΟΛΟΙΠΟ ΑΔΕΙΑΣ δεν δουλεύει... δηλ όταν βάζεις τις ημέρες δεν βγαίνουν οι υπόλοιπες, κάνω κάτι λάθος ή θέλεις διόρθωμα;;
Επίσης θα ήθελα να ρωτήσω πως αλλάζω το έτος (2014 κλπ) και πως μπορώ να προσθέσω και άλλα είδη αδειών
Ευχαριστώ τον Εμπευστή, Δημιουργό και τον Τελικό Σχεδιαστή του έργου αυτού

Flashgordon61 27-11-12 10:07

1 Συνημμένο(α)
Φίλε Θανάση σ΄ ευχαριστώ.

Απ΄ότι παρατήρησα ο κώδικας πρώτα εισάγει τις ημερομηνίες αδειών και μετά αφαιρεί τα Σαββατοκύριακα και τις αργίες.
Κώδικας:

If Weekday(xDate, vbMonday) >= 6 Or IsHoliday Then    '
                  cell.Value = ""

Στήνοντας το αρχείο προέκυψε μία νέα παράμετρος
Κάποιοι εργαζόμενοι εργάζονται Σάββατο και έχουν ρεπό μια άλλη μέρα της εβδομάδος.
Έχω σχεδιάσει το UserForm αλλά πρέπει να παραμετροποιηθεί ο κώδικας.
Περιμένοντας πάλι την πολύτιμη βοήθειά σου
Και πάλι σ΄ευχαριστώ:thanks:

Γιώργος

Flashgordon61 27-11-12 11:33

Φίλε Χρήστο καλημέρα.
Το αρχείο δεν έχει πρόβλημα
Στην στήλη OM (Σύνολο αδειών) καταμετρά τις άδειες (=IF(OJ7="";"";COUNTIF(C7:OH7;"a")+COUNTIF(C7:OH7; "α")) τα κελιά της γραμμής δηλαδή που έχουν το γράμμα Α.
Στην στήλη ΟΝ (Υπόλοιπο Αδείας) αφαιρεί από τις Άδειες Έτους (στήλη OL) το σύνολο των αδειών (=OL7-OM7)
Για να αλλάξεις το Έτος κάνεις τα παρακάτω
1) Στο κελί Β5 που έχει όνομα cYear βάζεις το επιθυμητό έτος (πχ 2014)
2) στο κελί C1 βάζεις την συνάρτηση =WEEKDAY(C6;2)>5
3) στο κελί C2 βάζεις την συνάρτηση =IFERROR(MATCH(C6;eortes;0);)
4) στο κελί C3 βάζεις την συνάρτηση =MOD(MONTH(C6);2)
5) Επιλέγεις τα κελιά C1 έως C3 και σέρνεις μέχρι τέλους (στήλη ΟΙ)
6) Στην γραμμή 4 και στην αρχή εκάστου μηνός γράφεις τους μήνες.
7) στο κελί C5 βάζεις την συνάρτηση =C6
8) Στο κελί C6 βάζεις την συνάρτηση =DATE(cYear;1;1)
9) Στο κελί D6 βάζεις την συνάρτηση =C6+1, το επιλέγεις και σέρνεις μέχρι τέλους (στήλη ΟΙ)

Δες το θέμα http://www.ms-office.gr/forum/excel-...ma-adeion.html

Για παραμετροποίηση περαιτέρω των ειδών αδείας (αν το συγκεκριμενοποιήσεις) χρειάζεται επιπλέον κώδικας (Το αφήνω στους ειδικούς......)

Γιώργος

Thanosp 27-11-12 12:13

1 Συνημμένο(α)
Καλημέρα
Γιώργο αν το Σάββατο είναι Επίσημη αργία, για την περίπτωση ρεπό να ξέρεις γίνεται πάντα απαλοιφή.
Θανάσης

xristos 27-11-12 12:20

Φίλοι του Φόρουμ ΚΑΛΗΜΕΡΑ σας.
Φίλε Γιώργο ευχαριστώ για την άμεση απάντησή σου.
Τα έκανα και έχω να προσθέσω στην λεπτομερή περιγραφή σου τις εξής επισυμάνσεις:
1) Εκεί που λες
Παράθεση:

7) στο κελί C5 βάζεις την συνάρτηση =C6
, πρέπει να προσθέσεις το επιλέγεις και σέρνεις μέχρι τέλους (στήλη ΟΙ)
το λέω για τους φίλους (όπως και εγώ) που δεν έχουμε και πολλές γνώσεις.....
2) Επίσης έχω να παρατηρήσω ότι όταν το έκανα όλα όσα μου είπε.. ενώ αλλάζω τα έτη και βγαίνουν κανονικά τα Σαββατοκύρια όταν πάω να περάσω μια άδεια δεν μου τα αφαιρεί..(Τα Σαββατοκύριακα)
3) Στην Λίστα και στο κελί ON7 που υπάρχει ο τύπος {=OL7-OM7} είναι ο ίδιος ο τύπος σε όλα τα υπόλοιπα κελιά ON8 κλπ. Επίσης για πέσμου πως μπαίνει το {} γιατί το έχω ξεχάσει.
Ελπίζω να μας βοηθήσουν (όπως κάνουν πάντα) και οι ειδικοί όσο αφορά τις επιπλέων άδειες.

Flashgordon61 27-11-12 15:32

Φίλε Χρήστο καλησπέρα
Σωστή η επισήμανση
Παράθεση:

πρέπει να προσθέσεις το επιλέγεις και σέρνεις μέχρι τέλους (στήλη ΟΙ)
Σημειώνουμε τις άδειες ως εξής:
Με Α (ελληνικό η αγγλικό) για τις άδειες εργασίας
Με I (ελληνικό η αγγλικό) για τις ιατρικές άδειες
Με E (ελληνικό η αγγλικό) για τις ειδικές άδειες
Αν το κάνεις αυτό, στην στήλη ΟΜ (Σύνολο αδειών), όπως δείχνει και η συνάρτηση
(=IF(OJ7="";"";COUNTIF(C7:OH7;"a")+COUNTIF(C7:OH7; "α"))) καταμετρά τα (α) & (a) της γραμμής.
Στο φύλλο (Ετήσια Φόρμα) καταμετρούνται μόνο οι άδειες εργασίας, οι άλλες άδειες καταμετρούνται στο φύλλο (Control)
Ο τύπος {=OL7-OM7}, είναι τύπος πίνακα και εισάγεται ως εξής :
Επιλέγεις τα κελιά ΟΝ7:ON88 , γράφεις =OL7-OM7 και πατώντας τον συνδυασμό πλήκτρων Ctrl+Shift+Enter μπαίνουν τα άγκιστρα { }.
Αν γίνουν τα παραπάνω, το αρχείο λειτουργεί άψογα.

Γιώργος

Flashgordon61 27-11-12 15:49

Θανάση χίλια ευχαριστώ:thanks::thanks:

Απέκλεισα το MsgBox ar_hm που δήλωνε τον αριθμό ημέρας του ρεπό και το οποίο εμφανιζόταν με
Κώδικας:

Private Sub ComboBox3_Change()
    ar_hm = ComboBox3.ListIndex + 1
    'MsgBox ar_hm
End Sub

& με το
Κώδικας:

If OptionButton7.Value = True Then
        'MsgBox ar_hm

και δουλεύει Α Ψ Ο Γ Α.
Ο κώδικας επειδή καταγράφει , ελέγχει & διαγράφει καθυστερεί λίγο (ιδιαίτερα όταν καταγράφουμε μεγάλο αριθμό ημερών αδείας).
Παρόλα αυτά αυτό δεν μειώνει το δουλεύει Α Ψ Ο Γ Α.
Για το
Παράθεση:

Γιώργο αν το Σάββατο είναι Επίσημη αργία, για την περίπτωση ρεπό να ξέρεις γίνεται πάντα απαλοιφή.
απαντώ πολύ καλά κάνει.

Και πάλι ευχαριστώ.
Καλή συνέχεια

Γιώργος

xristos 27-11-12 19:17

Φίλοι του Φόρουμ γειά σας.
Γιώργο σε ευχαριστώ για την άμεση απάντησή σου και πιστεύω εσείς οι γνώστες των Η/Υ να βοηθάτε εμάς για να γινόμαστε καλύτεροι...
Σας ευχαριστώ πολύ


Η ώρα είναι 17:51.

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


Search Engine Optimization by vBSEO 3.3.2