σύντομη περιγραφή: Λοιπόν, σήμερα έχουμε το πρώτο ουσιαστικά μάθημα μετά την ολοκλήρωση της δασκαλίας της Visual Basic. Είναι ένα μάθημα αρκετά εφυρμοσμένο, γιατί στην πραγματικότητα θα προσπαθήσουμε να χρησιμοποιήσουμε όλα όσα έχουμε μάθει από τη Visual Basic, πίσω από ένα εργαλείο το οποίο το χρησιμοποιούμε σχεδόν καθημερινά, όπως είναι το Excel. Και αυτό είναι σε μια σειρά ενεργειών που θα κάνουμε, ώστε να χρησιμοποιούμε τη γλώσσα προγραμματισμού που μάθαμε μέχρι τώρα, για εφαρμογές που κάνουν ενγένει κάτι άλλο. Άρα λοιπόν, εμείς έχουμε μια γλώσσα που μάθαμε, που η σύνταξή της εμπολής ισχύει και σε άλλο λογισμικό, μόνο που προφανώς χρειάζονται και άλλες εντολές για να συνδέσουμε αυτά που υπολογίζουμε με το αντίστοιχο λογισμικό. Για να σας δώσω να καταλάβετε έτσι πολύ χοντρικά τι θα κάνουμε, επειδή ας ξεκινήσουμε καταρχήνα από τις εφαρμογές που είναι της ομάδας της Microsoft, γιατί και η Visual Basic είναι αντίστοιχα της Microsoft, όχι ότι έχουμε λόγο να ακολουθηθήσουμε αυτή τη διαδρομή, προφανώς πάρουν και άλλες και καλύτερες και πιο βολικές, αλλά τέλος πάντων, εφόσον το μάθημα έχει λογική Visual Basic, θα τη χρησιμοποιήσουμε υποχρεωτικά μέσα στο Office. Σκεφτείτε όμως ότι το Office που έχει ξεργαστεί κειμένο, έχει λογιστικά φύλλα, έχει βάση δεδομένων την Axes, έχει το Outlook, ηλεκτρονικό ταχυδρομείο, έχει λοιπόν το Visio ή το Project, έχει κάθε τέτοιο πρόγραμμα, το οποίο μπορούμε να χρησιμοποιήσουμε στην καθημερινότητά μας, βασικά προγραμματίζεται από πίσω. Και αυτό είναι κάτι που είναι πάρα πολύ χρήσιμο, δεν το έχουμε συνειδητοποιήσει, ότι πραγματικά σε οποιαδήποτε εφαρμογή του Office, είμαστε να πατήσουμε Alt και F11, μας βγάζει σε ένα περιβάλλον που δεν είχαμε ξαναπάει, χωρίς να έχουμε αγοράσει κάποια ειδική έκδοση. Για παράδειγμα, δούμε εδώ, όταν Basic έχει ξεκινήσει, ότι ακόμη και στο ταπεινό PowerPoint, δηλαδή δεν χρειάζεται να είμαι κάπου ειδικά, σε οποιαδήποτε εφαρμογή του Office, αν εξαιρέσεις ότι κάνει κάποια ώρα για να ανοίξει ένα απλό αρχείο, αν πατήσεις το Alt-F11 θα σε μεταφέρει σε ένα άλλο περιβάλλον. Αυτό το περιβάλλον δεν είναι άλλο πρόγραμμα, είναι μέσα στο PowerPoint, μέσα στο Excel, μέσα στο Word, αν το δοκιμάσετε και στα δικά σας δεν χρειάζεται να έχετε εγκαταστήσει κάτι ιδιαίτερο. Και μπορείτε να φανταστείτε ότι γενικώς είναι κάτι που μοιάζει, γράφει ότι είναι Visual Basic. Και καταλαβαίνετε ότι αυτός είναι ο χώρος που απλά το είχαμε από την άλλη μεριά όταν δουλεύαμε με τη VB, όπου μας έγραφε ποιες φόρμες είχαμε, τι modules είχαμε, τι resources είχαμε κλπ. Και κάτω για τα διάφορα αντικείμενα είχε τα properties, τις ιδιότητες, όπου αναλυτικά φαινόταν. Απλώς αυτά ήταν από εκεί και εμπολής αυτή η αισθητική είναι η VB6, δηλαδή παλιά VB. Εντάξει, κατα τα λοιπά όμως, για παράδειγμα, σας δείξω λίγο έτσι για να μπείτε στο νόημα. Εάν εγώ κάνω insert user form και φτιάξω μια φόρμα θα είναι κάτι σαν αυτό. Αυτό είναι 99% Visual Basic 6 παλιά. Που σαν κώδικας είναι η ίδια, τα γραφικά της δεν είναι τόσο ωραία, αλλά σαν κώδικας είναι κάτι πολύ παραμπλίσιο. Δηλαδή εδώ μπορώ να πάρω και να γράψω, ας πούμε, ένα label, ένα text box, ένα combo. Εντάξει, έχω τα γραφικά μου και έχω τον κώδικά μου. Έχω ένα, ξαναγυρίζω στα γραφικά μου, βάζω ένα κουμπάκι, το κάνω double click και εδώ μπορώ να βάλω message box, κατά τα γνωστά. Παράδειγμα. Εντάξει, κώδικας, ταπεινός κώδικας. Ωραία, άρα αν εκτελέσω αυτή την εφαρμογή και το πατήσω θα μου βγάλει ένα μήνυμα. Εντάξει, άρα ουσιαστικά έχω χώρο για να γράψω πίσω από οποιαδήποτε εφαρμογή Office κάτι δικό μου. Τώρα θα νομίζεις και για ποιον λόγο να το κάνω αυτό, υποτίθεται ότι αυτά είναι προγράμματα που κάνουν μια συγκεκριμένη δουλειά. Εγώ να πάω να γράψω πίσω από το PowerPoint τι. Να μετροπίσω το PowerPoint για ποιον λόγο. Εντάξει, το PowerPoint είναι μια ακρή εκδοχή, εγώ ζητήμα να έχω γράψει ή και μια φορά για το PowerPoint, θα σας πω δεκάδες άλλες για άλλα αντικείμενα του Office. Για παράδειγμα. Ακυρώνω αυτό τώρα. Excel, πάνω από όλα, πάνω και κύριως το Excel. Και οι λόγοι είναι αρκετοί και σημαντικοί. Για παράδειγμα. Βρώχει και επαναλυτικές διαδικασίες. Στο Excel δεν έχει επαναλυτικές διαδικασίες. Ουσιαστικά βάζεις κελιά που έχουν μια άλλη σχέση με κάποια άλλα κελιά, και όταν αλλάξει κάτι σε ένα κελί αλλάζει το υπόλοιπο. Δεν κάνει καμιά κυκλική διαδικασία. Η μόνη κυκλική διαδικασία είναι ο solver. Δηλαδή που του ζητάς ένα goal setting, ας πούμε, να κλείσει μια διαφορά, να μηδενήσει μια διαφορά, να βελτιστοποιήσει, να μηδενήσει μια συνάρτηση, να λύσει ένα πρόβλημα. Μόνο τότε κάνει επαναλυτική διαδικασία. Σε όλες τις άλλες περιπτώσεις είναι κελιά με κελιά. Αυτό λοιπόν εμείς μπορούμε πολύ εύκολα με την ίδια λογική. Από το ένα κελί, πριν πάμε στο άλλο κελί, μπορεί να περάσουμε από μία επαναλυτική διαδικασία και να δώσουμε τιμή στο άλλο κελί από αυτόν τον υπολογισμό. Αυτό είναι πάρα πολύ βάση. Από τη στιγμή που εγώ μπορώ να φτιάξω φόρμες μικρές ή να φτιάξω μια φόρμα που να πιάνει όλη την οθόνη. Και έτσι, ενώ από πίσω θα υπάρχει το Excel, στην πραγματικότητα δεν θα βλέπει ο χρήστης κανένα Excel. Ίσως θα βλέπει λίγο το Snapshot όταν ανοίγει το splash screen το λεγόμενο, όταν ανοίγει θα λέει Excel και θα κρύβεται και μετά θα βλέπεις μια φόρμα που θα σε υποχρεώνει να πατήσεις μόνο κόμπος και να επιλέγεις τιμές. Δηλαδή να μην κάνεις βόλτα μέσα στο Excel να βλέπεις τι τιμές πρέπει να βάλεις, να μην μπορείς να τα χαλάσεις, να μην μπορείς να βάλεις διαφορετικές τιμές. Στα αποτελέσματά σου θα εμφανίζονται πάλι σε φόρμα, θα φεύγει μία και θα έρχεται η άλλη. Κατά τα λοιπά κελιά από πίσω. Ποιον υπολογισμό και πόσο υπολογισμό θα το κάνουμε στα κελιά και ποιον υπολογισμό και πόσο υπολογισμό θα το κάνουμε με κώδικα, αυτό είναι δικό μας θέμα. Αν είμαστε σχετικά έμπειροι ή ξέρουμε τι μας γίνεται, θα χρησιμοποιήσουμε σταθερές σχέσεις κελιών, εκεί που υπάρχουν και θέλουμε να είναι σε κελιά και διαδικασίες που πρέπει να τρέχουν προγραμματιστικά θα τις κάνουμε προγραμματιστικά. Επίσης, συγγραφή διασύνδεση του Excel πραγματικού κώδικα. Δηλαδή έχω γράψει εγώ κάτι στη VB για τη διαγραμματική μου ή για μια άσκηση μου, ή λύνω ένα μεταλλικό δοκάρι, ή βρήκαμε μια ισορροπία σε ένα κόμβο, ή βρίσκω τον δεύτερο άξονα σε μια διατομή σκυροθέματος, ή έχω λύσει ένα κώδικα, κάτι στην τραυλική, κάτι στο γεωτεχνικά. Παίρνω τον κώδικα έτοιμο, δεν χρειάζεται να τον κάνω κελιά, τα κελιά θα μου δώσουν τις τιμές δεδομένων εισαγωγής, θα τις βάλω στον κώδικα, θα κάνω τις πράξεις και θα ξαναγυρίσω τιμές στα κελιά. Μπορώ λοιπόν, οποιοδήποτε κώδικα έχω γράψει στην BB, να το περάσω στο Excel. Φυσικά έχω εποπτικότερη ροή προγράμματος. Ποιος από εμάς δεν έχει τύχει στην περίπτωση να του δώσει ένας φίλος ένα πρόγραμμα, το οποίο μέσα έχει ένα εκατομμύριο κελιά, και δεν ξέρεις ποιο να πατήσεις, από πού ξεκινάει, ποιο επικαιροποιείται μετά, πώς πηγαίνει ο υπολογισμός. Και σου λέει κιόλας, κοίταξε, θα πατήσεις μόνο αυτά που είναι με κίτρινο, από πάνω τα άλλα μην τα πειράξεις, και πειράζεις ένα και μετά χαλάει ο υπολογισμός. Όλα αυτά μπορεί να τα αποφύγει κανείς. Μπορεί να έχει δεδομένα από πέντε κελιά, έναν κώδικα μεγάλο, αποτελέσματα σε πέντε κελιά, και ωραία γραφικά, γιατί το Excel κάνει πολύ καλύτερα γραφικά από τη BB. Τη BB τη συμβατική, τέλος, πάνω που βλέπω. Λοιπόν, έχουμε κάθε λόγο να φτιάξουμε ένα κανονικό πρόγραμμα πίσω από το Excel, αντί απλώς να βάζουμε κελιά. Φυσικά έχω τη δυνατότητα να κάνω αυτόμανι την κελεγχόμενη έξοδο δεδομένων σε αρχεία. Δηλαδή, έχω αποτελέσματα στο Excel, θέλω να βγάλω μόνο τη στήλη D και δίπλα τη στήλη F σε ένα αρχείο, τρεις γραμμές κώδικα. Πατάω ένα κουμπάκι, παίρνει τα δεδομένα και τα στέλνει σε ένα αρχείο. Χωρίς να χρειάζεται να κάνω select, new φύλλο εργασίας, αντιγραφή, save as txt κλπ. Πολύ πιο γρήγορα από λίγο τελεσματικό. Μεταφορά δεδομένων και συνεργασίας με όλες τις άλλες εφαρμογές του Office. Αυτό από ένα παράδειγμα που δεν είναι παράδειγμα μηχανικού, είναι παράδειγμα που μας χρειάστηκε. Διοργανώναμε ένα συνέδραιο και είχαμε όλους τους συμμετέχοντες σε μια βάση δεδομένων. Δηλαδή όνομα, επίθετο, χώρα, email, η εργασία, η βαθμολογία που πήρε η εργασία. Ανάλογα με τη βαθμολογία είχαμε ένα κώδικα που έλεγε αν η εργασία έγινε ταποδεκτική ή όχι. Και μετά έτρεχε ο κώδικας και έπαιρνε, άνοιγε το outlook από πίσω, έπαιρνε το email αυτού που το έβαζε και έλεγε στα ανταρκείμενα. Αγαπητή κυρία, φέρ' αυτό το όνομα, βάλτο. Με βάση την εργασία που μας στείλατε με τίτλο, φέρ' το όνομα, βάλτο, κρήθηκε η εργασία σε αυτού που πήρε αυτό το βάθμό και από εδώ και πέρα θα κάνετε αυτές τις ενέργειες. Αλλά αυτό ήταν select case. Αν ήταν reject δεν είχε καμία ενέργεια, αν ήταν, ξέρω εγώ, resubmit ή κάτι άλλο, είπε, βάλε μας την εργασία, έλεγε, θα κάνεις αυτές τις ενέργειες, θα επικοινωνήσεις εκεί. Και με έναν batch τρόπο, 500 email, φύγαν παραμετροποιημένα με βάση του βαθμού. Δηλαδή, στείλαμε email παραμετροποιημένο με βάση τα δεδομένα που υπήρχαν στην Άξας. Ύστερα, συγγραφή δικών συναρτήσεων που δεν υπάρχουν στο Excel. Μέχρι και εμείς θα κάνουμε σε λίγη ώρα μια συναρτήση πολύ απλή που θα υπολογίζει κάτι που δεν υπάρχει μες στο Excel. Αυτό μπορεί να είναι είτε μαθηματικά, είτε οτιδήποτε άλλο που μας εξυπηρετεί εμάς. Γιατί να μπορούμε να γράψουμε μια δική μας συναρτήση, τι θα πει σαν χ. Ότι θα πει μήτονο του χ. Το ίδιο μπορεί να σημαίνει και οτιδήποτε του χ. Που εμείς θέλουμε να ορίσουμε τι είναι αυτό το οτιδήποτε. Και φυσικά εύκολες αλλαγές σε διαγράμματα με τη χρήση στοιχείων ελέγχου και όχι μενού επιλογών. Δηλαδή, φτιάχνω εγώ απλώς ένα Excel που δεν έχει κανένα σχεδόν κώδικ. Ένα κανονικό Excel. Στο οποίο όμως πειράζω το διαγραμμά μου από πίσω. Ούτως ώστε, όταν ας πούμε τα δεδομένα μου απέχουν πάρα πολύ μεταξύ τους αλλάζει αυτόματα την κλίμακα γιατί κάνει λογαρυθμική. Όταν τα δεδομένα του συντελεστή ασφαλείας είναι πάνω από τη μονάδα γίνονται πράσινα. Και όταν είναι κάτω από τη μονάδα γίνονται κόκκινα. Για να επισημαίνει ότι δεν είμαστε μπρος στη μεριά της ασφάλειας. Και αν ξαναλλάξουν τα δεδομένα ζωντανά αυτό ουσιαστικά είναι δυναμικά διαγράμματα. Όλα αυτά λοιπόν μπορούμε να τα κάνουμε με τη VBA. Είναι μεγάλο πλεονέκτημα. Απλώς επισημαίνω ότι αρκετές από αυτές τις λειτουργίες είναι έξτρα εντολές από τις εντολές που μάθαμε στη VB. Για τον απλό λόγο ότι αφορούν το Excel ή το Outlook ή οτιδήποτε συγκεκριμένο. Άρα σε κάθε ένα από αυτά τα προγράμματα που θα δούμε θα έχουμε 80% ίδιο κώδικα και 20% κάποιες πρόσθετες εντολές που αφορούν το οικιολογισμικό για το οποίο συζητάμε. Από εκεί και πέρα και θα πάμε πολύ γρήγορα να κάνουμε ορισμένα παραδείγματα για να το δείτε αμέσως. Το πρώτο βασικό πράγμα που πρέπει να καταλάβουμε είναι ότι για κάθε εφαρμογή, η γλώσσα που γράφουμε από πίσω ο κώδικας είναι στην πραγματικότητα μακροεντολή. Μακροεντολές, σας λέει κάτι, το έχετε ξανακούσει? Έχει κάνει κάποιος από εσάς μια μακροεντολή, ποτέ? Ο Θάνος. Άλλος? Εντάξει, μακροεντολή τι θα πει, σημαίνει ότι μια σειρά από δουλειές τις βάζω εγώ σε μια λογική σειρά, τις βιντεοσκοπώ κατά κάποιο τρόπο και μετά δεν επαναλαμβάνω κάθε δουλειά χωριστά αλλά πατάω ένα κουμπί και τις κάνει όλες μαζί. Παραδείγματος χάρη, ας πούμε ότι κάθε μέρα το πρωί στις 8 η ώρα, ποιά είναι η διαδικασία για να μπουν μέσα οι συνάδελφοι. Πρώτα απ' όλα ξεκλειδώνουν, μετά πατούν το συναγερμό, μετά ανάβουν τα φώτα, μετά ανάβουν τα μηχανήματα, μετά ξέρω εγώ κάνω restart το server, κάποια τέτοια πράγματα. Αυτά επειδή είναι τυπικά και γίνονται με τον ίδιο τρόπο, μπορώ εγώ να πατώ ένα κουμπί και να γίνονται όλα το ένα μετά το άλλο, ίδια. Αυτό λοιπόν για να γίνει γράφει κώδικα και ο κώδικας είναι κάτι σαν μακροεντολή. Θα σας δείξω ένα παράδειγμα τώρα, το οποίο θα το κάνετε αφού σας το δείξω στο Excel, αλλά πρώτα θα το δείτε σας παρακαλώ και μετά θα το κάνετε. Πάμε σε ένα κενό φύλλο εργασίας. Ένα θεματάκι είναι ότι εγώ εδώ βλέπω 2007 Excel ενώ εσείς βλέπετε 2003, αλλά δεν πειράζει, εντάξει. Όπου έχει διαφορές θα σας το πω. Για την ώρα μην κάνετε τίποτα. Λέω απλώς ότι έχω κελιά με ορισμένους αριθμούς. Λοιπόν, μακροεντολή θα πει ότι εγώ θα πάω να κάνω τώρα κάτι με αυτά, θα τα βιντεοσκοπίσω και μετά κάθε φορά θα τα κάνω αυτόματα με το πάτημα ενός κουμπιού. Πώς είναι το Ctrl-C που κάνουμε copy, ένα τέτοιο πράγμα. Μακροεντολή είναι κι εκείνο. Θα πάω λοιπόν εγώ, εσείς θα πάτε αλλιώς από τα εργαλεία, τώρα εδώ είναι 2007 το Office, αλλά εν γένη θα πατήσω μακροεντολές record new macro, δηλαδή βιντεοσκόπισε κάποιο τρόπο νέα μακροεντολή. Με το που θα το πατήσω θα με ρωτήσει αυτός, πώς θέλεις να δομαστεί μακροεντολή. Εντάξει, εγώ μπορώ να την πω my first macro παράδειγμα. Εντάξει, θα μπορούσα να βάλω ένα shortcut key, αλλά προσέξτε ότι τα περισσότερα shortcut keys είναι δεσμευμένα. Ctrl-P είναι print, Ctrl-S είναι select all, Ctrl-X είναι cut. Εντάξει, άρα αν πάω να βάλω Ctrl-X, αυτός αυτόματα θα μου πει Ctrl-Shift και X, γιατί το Ctrl-X είναι δεσμευμένο, έτσι. Που πρέπει να την αποθηκεύσω αυτήν, ας πούμε σε αυτό το βιβλιοεργασίας. Εντάξει, θα μπορούσα να έχω και μια βιβλιοθήκη, αλλά ας πούμε καταρχήν σε αυτό. Εδώ μπορώ να γράψω ελληνικά. Αυτή είναι η πρώτη μου μακροεντολή για τη μορφοποίηση των κελιών των αποτέλεσματων. Ακόμη δεν έχει αρχίσει να βιντεοσκοπεί, αυτό ήταν ερώτηση, το πιναγκάκι. Με το που θα πατήσω OK, βλέπετε που άνοψε εδώ ένα μπαλάκι. Λέει, a macro is currently recording, click to stop recording. Σε εσάς, στην περίπτωσή σας, θα γράφει λογικά επειδή είναι ελληνικό, καταγραφή. Τώρα λοιπόν αυτός βιντεοσκοπεί. Θα βιντεοσκοπήσει τα πάντα που θα κάνω και θα τα επαναλαμβάνει άκρητα και ταυτόσιμα, όλα εκτός από αυτό που κάνω τώρα. Γιατί αυτό δεν έχει νόημα, δεν κάνει κάτι. Από το κλικ και πέρα κρατάει στη μνήμη του τι έκανα. Μπορώ λοιπόν να πάω και ας προσέξουμε λίγο τι θα κάνω για να τα αντιπαραβάλλουμε μετά με αυτά που θα βιντεοσκοπήσει. Θέλω να επιλέξω αυτά εδώ, σωστά. Πρώτα δεν πατάω εδώ και μετά επιλέγω όλα αυτά. Ωραία. Θα τα κάνω λοιπόν πίσω. Είχα πάει δηλαδή από το ε5 στο ε16 και μετά μπορώ να πάω στο j5. Πάλι είχα να κλικ εδώ λοιπόν. Θα κάνω paste. Μπορώ να αλλάξω το χρώμα. Μπορώ να αλλάξω τα fonts, τα χρώματα δηλαδή. Μπορώ να αλλάξω τη γραμματοσύρα. Μπορώ να αλλάξω το μέγεθος. Εντάξει, προφανώς μπορώ να κάνω πολλά πράγματα, έτσι φαίνεται. Δεν έχουμε νόημα. Λοιπόν, αφού τα κάνω αυτά, μπορώ να πατήσω stop να σταματήσω, σωστά. Κατάλληλος stop. Σταμάτησε η μακροεντολή. Αυτός τώρα λοιπόν στις μακροεντολές του εδώ, καταρχήν αυτό δεν έχω κανένα λόγο να το κρατάω, το σβήνω, delete. Στις μακροεντολές του λοιπόν εδώ, view-macros, έχει αυτήν τη μακροεντολή. Μπορώ να έχω μια βιβλιοθήκη, οι οποίες βρίσκονται σε all open workbooks. Γιατί σε κάθε workbook εμείς αποθηκεύουμε και αν έχουμε πολλά ανοιγμένα είναι όλες ταυτόχρονα ενεργές. Μπορώ λοιπόν αυτήν να την εκτελέσω, να πατήσω δηλαδή το run και κάνει όλη τη δουλειά ταυτόχρονα. Αυτό φανταστείτε το με όλες του τις εκδοχές. Επιλέγω αυτό και αυτό και τα κάνω paste κάπου και τα κάνω save as txt κάπου. Δηλαδή μπορεί να έχω διάφορα, ό,τι κάνω πολλές φορές και συχνά, δεν έχω κανένα λόγο να κάθομαι και να το κάνω κομματάκι κομματάκι. Το κάνω όλο μαζί, εντάξει. Αυτό τώρα, να σας ρωτήσω το εξής, αν εγώ αλλάξω το 45 και το κάνω 55, θα αλλάξει? Ποιος είπε ναι. Γιατί λες ναι. Γιατί δεν έτρεξα, αφήνε τελικά να κάνει, αυτό να το αλλάξω τώρα. Εφόσον το ξανανεργοποιήσω. Γιατί εγώ θα το κάνω αυτό 55. Εντάξει, για την ώρα δεν ξανατρέξα. Εδώ δεν έχω γράψει ίσον αυτό, ώστε να είναι πάντα ίσο με ό,τι τιμή έχω εδώ. Εδώ έχω γράψει ότι θα αντιγράψεις αυτά που θα βρεις ως τιμές και ό,τι βρεις θα τα αντιγράψεις. Άρα να μην μπερδεύουμε τη σχέση μεταξύ των κελιών. Συμφωνούμε? Παρακαλώ. Μπορεί να αμαρτιστεί και κοντρόλ σιφτ χ για να γίνει αυτό. Ναι, λογικά θα πρέπει να παίξει υπό φυσιολογικές συνθήκες. Συγγνώμη, ήταν προδεσμευμένο το Snagit. Κάτι που δεν το ξέρει το Excel, όμως, γιατί αυτό είναι πρόσθετο πρόγραμμα. Τώρα τυχίσαμε. Αλλά κανονικά, ναι, εκτελείται έτσι. Παρεπτώνεις αυτά είναι πολύ καλό πρόγραμμα. Αυτό κάνει το εξής. Κάνεις screen capture και παίρνεις, ας πούμε, θέλω να πάρω μόνο αυτά. Αυτό. Και να το πάω σε ένα Word. Μπορώ να το πάω copy και να το βάλω σε ένα Word. Και βέβαια μπορώ να κάνω και άλλα πράγματα, να το κάνω recolor, να αλλάξω χρώματα και διάφορα τέτοια πράγματα, που είναι εκτός μαθήματος. Ωραία κάναμε και τη διαφήμησή μας το Snagit, να θυμηθούμε να τα κόψουμε στο μοντάζ. Όριστε. Δεν είναι freeware, όχι. Εμείς παραδόξως το έχουμε αγορασμένο. Το είχαμε δηλαδή freeware, εισαγωγικά. Και το εκτιμήσαμε τόσο πολύ και μετά το πληρώσαμε. Επειδή είπαμε για τις επαναπηγείες και για τις διαδικασίες στο Excel, όταν παίρναμε το κελί και είχαμε το σακάδι και είχαμε το προηγούμενο κελί, αλλά με τα κελιά που αντιστοιχούν στη στράξη στήλη, αυτό ήταν αληθιντική διαδικασία. Κάξε, δεν πολύ χειροκίνητη όμως. Δηλαδή πρέπει να την κάνεις εσύ. Και κάθε φορά η σχέση που όρισες είναι σταθερή. Δηλαδή αυτό θα το κάνεις για 10 κελιά. Είναι σταθερό, ενώ αν κάνεις μια επαναληπτική διαδικασία σε κώδικα, το από 1 μέχρι τόσο, το τόσο, μπορεί να είναι παράμετρος. Θα το κάνουμε αμέσως σε λίγο. Άρα λοιπόν, προφανώς ενταξύ αυτό που λες, αλλά σε γενικές γραμμές έχουμε πολύ μεγαλύτερη βελξία όταν γράφουμε κώδικα. Θα το δούμε σε παράδειγμα αμέσως μετά. Τώρα, πριν πάτε και το κάνετε, μην το κάνετε ακόμα παιδιά. Πατάω Alt-F15 και βλέπω ότι καταρχήν αυτός εδώ αναγνώρισε ότι έχω τρία φύλλα εργασίας, που σε εσάς, επειδή είναι ελληνικό το office εδώ, θα λέει φύλλο ένα, φύλλο δύο, φύλλο τρία. Και ένα module, δηλαδή μια λειτουργική μονάδα, στην οποία μέσα γενικώς γράφουμε κώδικα, όπου θα δείτε ότι αυτός πήγε και έγραψε ένα κώδικα μόνος του. Δηλαδή, ουσιαστικά, και εδώ δώστε λίγο προσοχή, είναι πάρα πολύ σημαντικό αυτό. Αυτές τις κινήσεις που εγώ έκανα με το mouse, αυτός μου τις μεταγλώτισε σε κώδικα. Ο κώδικας αυτός, η αλήθεια είναι ότι είναι στρυφνός. Εντάξει, VB είναι, είναι VB του Excel, αλλά τον έγραψε μόνος του. Αυτό σημαίνει ότι κάθε φορά που εγώ δεν ξέρω πώς γίνεται κάτι, δηλαδή, ας πούμε, δεν ξέρω πώς γίνεται τι να πω τώρα, όποιαδήποτε εντολή που δεν ήξερε πώς να την προγραμματίσω, αυτό, μαθηματικά και τριγωνομετρία, κάνε αυτό το function, θα το κάνω, θα το βιντεοσκοπίσω και θα πάω μετά στη γλώσσα πίσω να δω πώς το γράψει. Εντάξει, άρα, με βοηθάει πάρα πολύ αυτό. Δεν είχα τέτοιο ανάλογο στη VB την κανονική. Πες το, Ρονί. Δεν μπορώ να τη διάσω, εξαίρεται την κανονική. Ε, αυτό κάνουμε. Όχι την κανονική. Ε, αυτή που έχει μέσα. Κοίταξε, μπορείς να κάνεις το εξής, για να είμαστε δίκαιοι. Από κανονική VB, πες ότι έχεις τα αποτελέσματα σ' ένα πίνακα, μπορείς να κάνεις open το κανονικό, πιο πρόσφατο Excel και να τα βάλεις σε φουκελιά εργασίας. Πέντε γράμμες κώδικας. Εντάξει, μπορείς επίσης, και αυτό είναι πάρα πολύ εύκολο και έτσι θα μιλούσαν όλες, με όλες τις γλώσσες. Και όλα τα προγράμματα. Από τη VB, να γράψεις ένα αρχείο TXT, με μια δομή απλή, και σε οποιαδήποτε γλώσσα να είσαι, C++, Python, ξέρω, Java, τίδήποτε, θα ανοίξεις το αρχείο και θα πάρεις τα δεδομένα. Λέω τώρα, στη γενική περίπτωση. Αλλά ότι μπορείς να ανοίξεις Excel και να βάλεις τα νούμερα, μπορείς, ναι. Και άλλως θα το κάνουμε. Λέω όμως ότι, υπάρχει εδώ ένας κάποιος κώδικας, ο οποίος κώδικας παρέπτει όντως, δεν είναι πολύ παράλογος. Πρώτα απ' όλα, είναι μια υπορρουτίνα, που έχει όνομα, το όνομα της μακροεντολής, έτσι δεν την ονόμασα. Άρα αυτό δεν ήρθε τυχαία, αυτό το διάλεξα εγώ. Έχει βάλει για σχόλια, αυτά τα οποία του έγραψα. Και έχει βάλει για keyboard shortcut, ως σχολιασμό, το ctrl και shift και exp, οπότε το διάλεξα. Και ξεκινάει με πράγματα που είναι σχετικά, λογικά. Δηλαδή λέει, και αυτή είναι η σύνταξη, αν θέλετε, των πρόσετων εντολών του Excel, που συναρτώνται με τη χρήση της VB. Δηλαδή λέει, range ε5 έως ε16, τελεία select. Πράγματι, αυτό δεν έκανα. Range ε5 ε16, τελεία select έκανα. Δεν ήξερα ότι θα το γράφω έτσι, αλλά αυτό έκανα πρώτος. Πολύ ωραία. Το επόμενο πράγμα που έκανα, τι ήταν? Copy. Να δούμε τι έγραψε αυτός. Έγραψε, select, τελεία copy. Μετά τι έκανα? Πιο γελικά. Καταρχήν για να κάνω paste, πρώτα πάτησα εδώ. Και μετά έκανα paste. Και μάλιστα έκανα κανονικό paste, δεν έκανα copy-paste, το νορμάλ. Άρα, άμα πάω εγώ εδώ, δείτε τι έγραψε. Έγραψε, range j5, τελεία select πράγματι. Και κάνε μου paste στο ενεργό φύλλο εργασίας, γιατί δεν έχει μόνο ένα φύλλο. Δηλαδή, σε ποιο φύλλο να κάνω paste. Δεν το επιλέγει. Όχι δεν το επιλέγει, για να μην το επιλέξει λοιπόν, επιλέγει στο active seat. Το active seat είναι αυτό που είναι μέσα. Είναι αυτό που είναι στο e, ποιο το μη, τελεία μη. Ναι, κάτω κάποιο τρόπο ας το πούμε, ναι. Λοιπόν, και μετά λέει, το application cut copy mode, δεν ισχύει. Δηλαδή, μην νομίζεις ότι εγώ θα κάνω cut copy, κάνω κανονικό copy. Και μετά έχει ένα width, ουσιαστικά με όλες τις εντολές. Δηλαδή, αυτές είναι πακέτο, όλες οι εντολές που αφορούν τις ιδιότητές του. Που λέει, ξέρεις, σε ό,τι αφορά το interior, το εσωτερικό δηλαδή, το pattern που έχει, το steel, είναι solid. Πράγματι, δεν βάλαμε hats. Και αυτό έχει ένα color index, όσο βάλαμε 65, 5, 35, είναι το κίτρινο προφανώς. Και το font ήταν εκείνο το κόκκινο που επιλέξαμε. Και στην αρχή ορίσαμε arial10, που δεν ήταν strike-through γιατί ήταν false. Ούτε ήταν δίκτης, ούτε ήταν εκθέτης, ούτε είχε σκιά, ούτε ήταν underline κλπ. Και είχε αυτό το χρώμα. Και μετά αυτός βέβαια τα έκανε σε δύο βήματα, την ίδια δουλειά. Γιατί αν προσέξατε, έτσι όπως ήμασταν εδώ, πήγαμε και κάναμε πρώτα τη γραμματοσυρά. Άρα πρώτα τα έκανε arial10, τυπικά μιλώντας. Και μετά τα έκανε arial18, γιατί βάλαμε. Άρα ουσιαστικά αυτός είχε γράψει δύο φορές. Απλώς το έκανε τόσο γρήγορο που δεν το βλέπουμε. Και φυσικά δεν έχουμε κανένα πρόβλημα να πάμε να το σβήσουμε. Παρεμπιπτόντος εδώ μπορούμε να σβήσουμε ό,τι θέλουμε. Αυτό ας πούμε το πακέτο που είναι κατά κάποιο τρόπο περητό, το σβήνω. Και εγώ μείνω άλλο. Και βέβαια και εδώ αρχίζει τώρα το ενδιαφέρον του πράγματος. Γιατί κακά τα ψέματα. Προσωπικά σας λέω, ελάχιστο coding θα γράψετε για το φορμάρισμα. Ή την κουτσά στραβά, φορμάρισμα κάνουμε και μόνοι μας. Εντάξει, δεν είναι αυτό το θέμα μας. Το θέμα είναι να αρχίσεις να επικοινωνείς με τα κελιά. Παράδειγμα λέμε λοιπόν. Έστω ότι εμείς εδώ πάλι γράφουμε, μέσα της box, εντάξει, θα ξεκινήσουμε να στέλνουμε δεδομένα στα κελιά. Εντάξει, ένα μειονέκτημα είναι ότι δεν υπάρχει αυτό το πάρα πολύ βολικό error list από κάτω, που είχε καινούργια VB, ακριβώς γιατί αυτή είναι η VB6, ούτε κι η νύχη. Εντάξει, άρα αυτό θα ζήσουμε με αυτό, δεν έχουμε τέτοια βοήθεια. Παρόλα αυτά, όπως βλέπετε, αυτή η σύνταξη είναι ό,τι ξέραμε, και έτσι όπως είμαι εδώ, πάω και κάνω, μαγροεντολή view macros run, τι θα κάνει, θα κάνει αυτό που έκανε πριν και θα βγάλει και ένα μήνυμα. Δηλαδή αυτό. Έτρεξε κώδικα. Ένα τελευταίο πράγμα, πριν το κάνετε, παρότι στο 2003 πρέπει να πάτε από το tools-cook-customize, για να βγάλετε εδώ πέρα ένα υποτιθέμενο κουμπάκι, παρόλα αυτά, θα σας το δείξω μετά πώς γίνεται, όταν αυτό το κουμπάκι το βάλω πάνω στη φόρμα μου, έτσι ας πούμε, με ρωτάει αυτός, ποια μαγροεντολή θες εγώ να εκτελώ, όταν πατάς αυτό το κουμπί, μία έχω έτσι κι αλλιώς, ok, αλλάζω και αυτό, μπορώ να το πω μορφωποίηση, σβήνω και αυτά εδώ που είχα, delete, και έτσι μπορώ να εκτελέσω τη μαγροεντολή, χωρίς να πηγαίνω σε εκείνο το άξιστο περιβάλλον, χωρίς να πηγαίνω από εδώ, ούτε στη VB θα πάω, ούτε τις μαγροεντολές θα κάνω, απλώς θα πατήσω το κουμπάκι, θα κάνει τη δουλειά. Καταλαβαίνετε λοιπόν ότι μπορεί εγώ να έχω ένα πλέγμα από κουμπιά, αριστερά και δεξιά, κάτι σχετικά όμορφο, επί το οποίο να έχω διαφορετικές δουλειές. Διάβα σε αρχείο, γράψε σε αρχείο, πολλαπλασία σε αυτό, πολλαπλασία σε εκείνο, στείλτα εδώ, στείλτα εκεί, εντάξει είναι πάρα πολύ βολικό, και σκεφτείτε ακόμα δεν γράψαμε κώδικα, θέλω όμως πρώτα να κάνετε το εξής, θα γράψετε μερικά δεδομένα όποια να νομίζετε, τυχαία, και ακολούθως θα πατήσετε από το εργαλία μακροεντολή, τώρα λέω με αυτά που βλέπετε εσείς, καταγραφή μακροεντολής και θα κάνετε μια μορφοποίηση πάνω κάτω τέτοιου τύπου, και θα σταματήσετε την εγγραφή της μακροεντολής, και μετά θα την τρέξετε για να δείτε αν εκτελεί αυτές τις έντολες. Για δούμε. Αυτό που πρέπει να θυμόμαστε και θα μας ακολουθεί σε όλη την VBA που θα δουλέψουμε, δηλαδή Visual Basic 4 Applications, είναι ότι όταν φτιάχνουν τέτοια κουμπάκια, που όπως καταλαβαίνετε μπορεί να είναι πάρα πολλά, ό,τι θέλω βάζω εδώ πάνω, και drop-down menu, είναι διαφορετική κατάσταση, να πατήσω το κουμπάκι και να εκτελέσω κάτι, και άλλο, να το πατήσω για να το αλλάξω, να το μεγαλώσω, να το αλλάξω το κείμενο κλπ. Δηλαδή, κάποιος θα μου πει, εντάξει, εσύ έγραψε εδώ το μορφωποίηση. Και πώς θα το αλλάξεις το μορφωποίηση, αφού κάθε φορά που θα πηγαίνεις από πάνω να πατάς, αυτό δεν επεξεργάζεται, το πατάς και κάνεις τη δουλειά. Έτσι δεν είναι ναι. Άρα λοιπόν, εγώ θα πρέπει να μεταβαίνω από μία κατάσταση λειτουργίας, η επόμενη run mode, τώρα είμαι σε run mode, σε μία κατάσταση επεξεργασίας που είναι edit mode. Δηλαδή, θα πρέπει να είμαι εδώ, να πατήσω αυτό το τριγωνάκι το μπλε, το οποίο ισχύει παντού, στην access, το Excel, το Word, το Office, όλους, και όταν το πατήσω και μπω στο design mode, δηλαδή στο edit mode, και γυρίσω εδώ, βλέπετε ότι μπορώ να κάνω edit text. Μπορώ να του αλλάξω το μέγεθος, εντάξει. Ο πιο σωστός τρόπος όμως, για να ισχύει για όλα τα κομμάτια της VBA που δουλεύουμε, είναι αυτός, και μετά κάνω exit design mode, και είμαι ακριβώς εκτελέσιμος. Εντάξει, μπορούσα να μπορούσα να κάνω και edit από εδώ. Άρα το πατάω και εκτελεί τον κώδικα. Όπως βλέπετε τώρα μου το έβγαλε λίγο πιο μικρό. Ωραία. Αυτό είναι λίγο στον κώδικα στο κουμπί. Στον κώδικα στο κουμπί, ναι. Πρέπει να συμβεί το σαμμάκρο και το ένα σαμ, που σαμμάκρο κρατάει μόνο το παντροπρέσβι. Ανάλογα. Αυτός τώρα εδώ μέσα τι το έχει αυτό σαν σαμμάκρο, δηλαδή άμα πάω να το τρέξω σαμμάκρο, αυτά είναι δύο διαφορετικά πράγματα. Εσύ έκανες copy, έκανες cut, εσύ συγκεκριμένα. Αυτός εδώ δεν έχει γραμμένο κώδικα ιδιαίτερα κάτω από το κουμπί, καλεί το σαμμάκρο. Και πώς μπορούμε να το κάνουμε από το 2003, να βάλουμε σαμμάκρο εντολή και να τραβάει μια κατ. Τι εννοείς να τραβάει τη σαμμάκρο εντολή, δηλαδή? Να τραβάει τη σαμμάκρο εντολή όπως την τραβάει εδώ, όχι όπως το έκανα εγώ. Θα κάνεις call, το όνομα της σαμμάκρο εντολής. Γιατί η σαμμάκρο εντολή επειδή είναι υπορρουτίνα, δεν πάει να είναι μια υπορρουτίνα με αυτό το όνομα. Άμα κάνεις call, my first macro, θα σε διαλέσει. Να ρωτήσεις, ναι. Ζάι μου, για να πω, πρέπει να είμαστε ελεύθεροι, να μπαίνει να μπορεί... Όχι. Καταρχήν γίνεται και με δεξί κλικ που έλεγε ο Θάνος και κατά δεύτερο μην μπαίνεις στο alt-15 και πατάς το τριγωνάκι. Σε μας παθιέται, λέει, ότι άνθρωποι να παθίσουν με exit design και πάμε να βάζεις φρίζερ να χώσεις το exit, δεν μπορείς να κάνεις τίποτα. Το κάνεις minimize και κάνεις ό,τι θέλεις. Ναι, δεν μπορώ να κάνω τίποτα. Ωραία, θα το κάνουμε στο διάλειμμα για να μην καθυστερούμε το μάθημα. Λοιπόν, τώρα έχουμε να κάνουμε μια πολύ σημαντική δουλειά. Παιδιά, δώστε λίγο προσοχή. Θα σας πω τώρα τις δύο βασικές εντολές που χρειαζόμαστε για να τρέχουμε VB στο Excel, δύο είναι οι πιο βασικές. Αυτές, εάν τις καταλάβετε, έχετε εμβελτιστοποιήσει τη χρήση της γλώσσας μέσα από το πρόγραμμα. Η μία εντολή είναι να διαβάσω από κελί και να βάλω σε μια μεταβλητή. Εντάξει, να κάνω κάτι με αυτή τη μεταβλητή. Η άλλη είναι να γράψω πίσω σε κελί. Δηλαδή, εγώ θα ήθελα να πάρω αυτό το 45, για παράδειγμα. Αν εγώ μπορώ να μιλήσω με οποιοδήποτε κελί, να πάρω αυτό το νούμερο, μετά μπορώ να το κάνω ό,τι θέλω με τις γνώσεις που έχω και μπορώ να το γράψω καμπολού. Άρα, αν μάθω αυτές τις δύο εντολές, πώς διαβάζω και πώς γράφω, έχω κάνει τη μισή δουλειά. Εντάξει, πάμε λοιπόν τώρα εδώ να δοκιμάσουμε να γράψουμε. Αυτό εντάξει, μπορώ να το κρατήσω, ή μπορώ και να το σβήσω, δεν με πειράζει. Να το σβήσω καλύτερα, αν το κουβαλάμε συνέχεια. Να ρητήσω. Να ρητήσω βεβαίως. Σε ένα κελί που έκανα πράγματα, όταν κρατώ τη δουλειά, βάλω στην κελί, κελί έτυχμό, να μην τα ξεχνίσει. Σου βγάζει? Ναι. Λοιπόν, έχω κρατήσει αυτό. Ας ξεκινήσουμε με την εξής απλή μεταβλητή. Έστω ότι έχω τη μεταβλητή που τη λένε d, ίσον, ας πούμε ότι είναι διάμετρος δηλαδή, για κάποιο λόγο. d ίσον, και θέλω να πάει να πάρει την τιμή του κελιού... Ποιο είναι αυτό? E5 του ε5. Λοιπόν, η σύνταξη εδώ μπορεί να είναι λίγο παράξενη. Θα σας φανεί λίγο παράξενη, αλλά όμως είναι αυτή. Άμα τη μάθετε και την κάνετε copy, ήδη συνεθίσετε, θα καταλάβετε ότι είναι πολύ απλό. Δηλαδή, εγώ μπορεί να γράψω d ίσον, worksheets. Δυστυχώς δεν λέει worksheets, λέει worksheets. Παρένθεση, εισαγωγικά, το φύλλο στο οποίο βρίσκομαι, γιατί για εσάς εδώ αυτό δεν είναι σι τένα, αλλά είναι φύλλο ένα, γιατί έχει τελικό όφης, φαντάζομαι. Κάτω εδώ γράφει φύλλο ένα, βιβλίο ένα, είναι όλο μαζί. Ωραία, αυτό λοιπόν εσείς θα γράψετε εδώ φύλλο ένα, αλλά εγώ πρέπει να γράψω σι τένα, εντάξει. Λοιπόν, μπορούμε να γράψουμε, αλλά εγώ γράφω τώρα τη γενική εντολή. Μπορούμε, ναι. Κλείνω, εντάξει, τελεία range ε5 κλείνει. Δηλαδή τι λέει, ότι μεταβλητή D, ισούται με την τιμή που έχω στο κελί ε5, στην περιοχή αν θέλετε, range ε5, του φύλλου εργασίας αυτού που περιγράφω. Εννοείται ότι αν εγώ αυτό πάω και το αλλάξω, και δεν το κάνω σι τένα και το κάνω τίποτε, ABC, θα πρέπει μετά να το μιμονέψω ABC, προφανώς. Έτσι δεν είναι. Λοιπόν, αυτά νομίζω τα είπαμε. Ορίστε. Δεν νομίζω, αλλά καλού κακού κράτησέ τα. Δεν νομίζω πάντως. Λοιπόν, αυτό τι σημαίνει λοιπόν, ότι έτσι όπως είμαι εδώ, εκτελώ την εντολή μου και μου βγάζει στο μήνυμα. Δύο σημειώσεις. Το ότι έβαλε το νούμερο 45 στη μεταβλητή D, το έβαλε. Αλλά δεν του είπα να το κάνει κάτι. Έτσι δεν είναι. Άρα δεν μπορώ από εδώ να το δω και τόσο βάλω unbreakpoint. Το δεύτερο είναι ότι θα παρατηρήσατε πιστεύω, ότι δεν χρειαστήκε να δηλώσω τη μεταβλητή. Κάτι το οποίο συνηθιζόταν στην παλιά TVBX, δεν ήταν δημοκρατικό, μπορούσε να γράψεις όσοι μεταβλητές χωρίς να τις δηλώνεις. Εκτός από ότι έχεις γράψει ψηλά ψηλά επάνω option explicit και τότε τις δηλώνεις. Αλλά επειδή αυτό δεν ήταν κάτι πρακτική, ουσιαστικά κυρώθηκε, ανερρέθηκε στις επόμενες εκπρόσεις. Εδώ, όμως, επειδή είναι το παλιό είδος, δεν χρειάστηκε να κάνω κάπου dim. Θα μπορούσα, φυσικά, να γράψω εδώ dim. DS double, ας πούμε. Εντάξει. Θα μπορούσα, όντως. Έτσι. Αλλά δεν είναι απαραίτητο στη TVB του Excel. Αυτό θέλω να σου πω. Δεν το ξέρω αυτό. Δεν μπορώ να σου πω. Στην μακάρνα σου εμένα είχα πάντως να σου πω. Θα περίμενε κάποιος της καινούργης εκδόσεις του Office να είναι... Ίσως γιατί η άλλη είναι αρκετά πιο βαριά. Και είναι αρκετά πιο απαιτητική. Μην ξεχνάς ότι... Δεν μάθω να τρέχω να πω. Δεν μπορώ να πω. Δεν μπορώ να πω. Δεν μπορώ να πω. Δεν μπορώ να πω. Δεν μπορώ να πω. Μα τρέχουν τα παλιά τα αρχεία όσο... Όχι, εντάξει. Μπορεί κιόλας. Γιατί ουσιαστικά να σας πω το εξής. Ότι κάποιος που είχε γράψει η κώδικα VB6... Αυτά που έφτιαξε στη Νέτ και μετά... Χρειαζόταν δηλαδή μια μεταγλώτηση... που συνήθως έκανε μόνο το 50-60% της μεταγλώτησης. Γιατί επειδή 6 ήταν πάρα πολύ φτωχή γλώσσα... Δεν είχε δηλωμένες μεταβλητές. Δεν είχε κλάσεις, κληρονομικότητα, όλες αυτές τις ιδιότητες της σύγχρονης γλώσσας. Οπότε αυτά δεν μπορούσαν να κάνουν extrapolation σε μια σύγχρονη. Έπαιρνε μόνο το καθαρό κώδικα. Με αποτέλεσμα να δεν δούλευε ποτέ. Και έπρεπε να την ξαναγράψεις γενικώς. Αντιθέτωσα από 2008 να ανοίγει σε 10. Από 10 να ανοίγει σε 13. Γενικά από Νέτ και μετά είναι, ας πούμε, backward compatible. Αλλά... Ίσως ένας λόγος λοιπόν που την κρατούν έτσι ταπεινή, είναι γιατί είναι πιο γρήγορη, στοιχειώδης και πιο απλή. Τώρα, αφού βρήκαμε τη μεταβλητή D, μπορούμε να βάλουμε ένα άλλο μήνυμα. Στο οποίο να λέει D ίσον και D. Για να δούμε, την πήρε την τιμή. Δηλαδή τι έγραψα, λέω βάλε μου ένα μήνυμα. Όπου. Απλώς να μου γράψεις. Για να δω αν πήρες την τιμή, για να μην βάζω break point. Πήρες, κατάλαβες, διάβασες εκείνο το κελί. Για να δούμε. Εννοείται πρέπει να αποθηκεύω, έτσι. Γενικώς. Τώρα αυτός μου ζητάει να αποθηκεύσω όχι την TVB, το Excel. Μου ζητάει να αποθηκεύσω. Να θυμάστε ότι όταν αποθηκεύω το Excel, τότε μαζί του αυτόματα αποθηκεύω και τη TVB. Δεν χρειάζεται χωριστή αποθήκευση, ούτε φόρμες αποθηκεύω. Χωρίε, ούτε τίποτε, όλα είναι ενσωματωμένα στο Excel, στο αρχείο. Εντάξει. Πάω λοιπόν να εκτελέσω. Εκτελώ. Και πράγματι, μου λέει, τέλεισο 45. Αυτό σημαίνει λοιπόν ότι κατέβηκες το κελί, την βρήκες την τιμή, την πήρα και την έβαλες. Σωστά. Ωραία. Μπορώ τώρα να κάνω και το ανάποδο. Μπορώ δηλαδή να πω ότι ξέρεις. Στο κελί, που εγώ το ονομάζω φυσικά στο φύλλο εργασίας που είμαι, στο sitena.range. Τι να πω. Να πω στο F1 ας πούμε. Πήγαινε και βάλε την τιμή. Παράδειγμα. Για να σας δείξω πώς μπορώ κάτι που έχω κρατημένο στο χέρι μου, σαν μεταβλητή, να πω να το βάλω σε ένα κελί. Αν καταφέρω και σπάσω αυτό το πάγο, μεταξύ του φύλλου εργασίας και της γλώσσας, πως εσείς τι έχω επικοινωνήσει. Δηλαδή μπορούσα πήρα, έκανα μια ταπεινή διαίρεση, διαίρεσα διά δύο και ξαναγράψα. Ναι, ακριβώς. Πάρα πολύ απλό. Έκανα τη μετάθεση. Δεν είναι τίποτα. Για να το εκτελέσουμε λοιπόν. Δ 45, να το F1. Πόσο? Δ δεύτερα. Άρα σίγουρα διάβασα, σίγουρα έγραψα. Συμφωνούμε? Ωραιότατα. Τώρα θέλω να σας δείξω έναν πιο χρήσιμο τρόπο από το να γράφω το κελί, περιγράφοντας τις συντεταγμένες του, να το πούμε έτσι, από τη θέση του σαν ε5 ή F1. Είναι πιο πρακτικό, θα το κάνω αυτό σαν σχόλιο να ακυρωθεί και θα το γράψω ως εξής. Τελεία. Το F ποιο γράμμα είναι? A, B, C, D, E, F. Άρα είναι ουσιαστικά πρώτη γραμμή έκτη στήλη. Σωστά? 1,6 είναι οι συντεταγμένες του. Έτσι δεν είναι? 1,6. Ισούτε με δε τρίτα θα γράψω τώρα, για να γράψεις 15. Αυτός είναι ένας εναλλακτικός τρόπος για να δίνω συντεταγμένες, είτε διαβάζω, είτε γράφω. Μπορεί κάποιος να μου πει για ποιο λόγο να προτιμήσω να γράψω το 1,6 αντί για το F1. Το μικρό σου. Ακριβώς. Γιατί αυτό μου δίνει τη φοβερή δυνατότητα το 1 να είναι X και το 6 να είναι Ψ. Ανάλογα. Τι θέλω να αλλάξω. Θα το κάνουμε σε λίγο. Ας το δούμε λίγο να τρέξει πρώτα με 1,6. Δηλαδή αποθηκεύω και εκτελώ. Είμαι εδώ. Νάτο. Άρα το κατάλαβε το 1,6 που είναι. Αλλά όπως πάρα πολύ σωστά υπονώντας, εγώ εδώ μπορώ να τον παραμετροπίσω. Δηλαδή μπορώ να γράψω το εξής. For i ίσον 1 του 100, next i, θα μου γράψεις την τιμή αυτή, ή όποια τιμή θέλω. i, j και i, ό,τι θέλω. Αλλά η μεν γραμμή θα τρέχει, η δε στήλη θα είναι σταθερή. Δηλαδή πες ότι εγώ θέλω να το γράψω από πάνω προς τα κάτω. Σημαίνει ότι αυτό θα ήταν i και να μου γράψεις παντού τα τετρίτα. Ή κάτι ακόμη πιο ενδιαφέρον, τέτοια i. Δηλαδή τώρα θα είναι 15 x 1, 15 x 2, 15 x 3, 15 x 4 και τώρα θα το κάνω. Λοιπόν, για να το εκτελέσω αυτό. Όμορφο. Ορίστε. Δεν μπορούσα να πατήσω αυτό και να το εκτελεί και το άλλο και όλοι πατώντας f, i. Όχι, έτσι και έτσι. Κοίταξε, αυτό επειδή είναι μέσα σε εισαγωγικά, ή αυτό, θα έπρεπε να είχε γραφτεί f και i. Τότε μόνο σαν κείμενο θα τα κολλούσε. Δίπλα-δίπλα. Αλλά αυτό εντάξει, είναι λίγο εξεζητημένο. Παρ' όλα αυτά θα έπαιζε. Καλή ερώτηση. Όχι, βασικά αποθηκεύω και εγώ πατάω το κουμπί μου, εσείς μπορείτε να πατήσετε, να πάτε μακροεντολές. Εργαλεία μακροεντολές run. Την βλέπεις και την πατάς run. Ή τη συνδέσεις με τα κουμπί. Απευθείας τρέχει αν πατήσω αυτό. Αυτό. Και αυτό γίνεται. Ανάλογα, από πού θέλεις να την καλέσεις. Λοιπόν, αντιλαμβάνεστε τώρα, ότι θα μπορούσα αν ήθελα, να μην τα βάλω σε ένα κελί, αλλά να τα βάλω σε έναν πιάνισμα. Γιατί όχι. Γιατί μπορεί να έχω κι άλλες πράξεις να κάνω και στο τέλος να θέλω να γράψω στο κελί. Θα μπορούσα να έχω δηλαδή ένα α του I. Απλώς εδώ, δηλαδή τι θα έκανα με αυτό, εκτός του ότι θα γράφα προς τα κάτω, θα τα έβαζα και σε έναν πιάνισμα. Όμως, στην προκειμένη περίπτωση, εντάξει, αυτό πρέπει να το δηλώσω. Δηλαδή ακόμη και στην ταπεινή παλιά βιμπή την έξι, τέλος πάντων τα πιανίσματα τα δηλώναμε. Δεν μπορούσα να γράψω δήμος φατού 2000 S double, κάτι τέτοιο. Οπότε τι έκανε αυτός, τα είσαι και ένα μη τρώω. Και αυτό σημαίνει, για παράδειγμα, ότι μπορώ να δουλέψω με όλους τους τρόπους. Μπορεί να έχω βάλει τα δεδομένα στο Excel. Και εγώ να τα παίρνω μαζικά, να τα βάζω σε ένα μη τρώω και να τα αντιστρέφω, να τα πολλαπλασιάζω, να τα κάνω κάτι με ένα άλλο μη τρώω. Να κάνω πράξεις, να κάνω μητρογραφική στατική, να κάνω τι θέλω. Έτσι δεν είναι κατανοητό? Παιδιά, εντάξει, μέχρι εδώ, ορίστε. Μπορείς να σου εγγράψω και ερώτησα. Μπορείς να σου εγγράψω και εγγραφήσουμε κάθε φορά, ή την Άξις και την BBX όταν... Όχι, χωρίς να το ξέρεις. Σε όλα τα Excel που έχουμε εγκαταστήσει, αν πατήσεις άλλα τα 15 υπάρχει. Είναι ενσωματωμένη. Απλώς δεν είχε τύχει τόσα χρόνια να το παρατηρείς, τι να σου το πει κάτι. Δεν χρειάζεται να εγκαταστήσετε τίποτα. Το καλό είναι ότι έτσι όπως είναι γραμμένο αυτό, αποθηκεύεις στο φύλλο εργασίας σαν να μην συμβαίνει τίποτα. Έτσι. Και το ανοίγεις και κουβαλάει μαζί του και τον κώδικο που έχεις. Το οποίο είναι πάρα πολύ βασικό πράγμα. Υπάρχουν απορίες, είναι κατανοητά, παιδιά, εντάξει, όλοι. Ωραία, σπάσαμε τον πάγο, πιστεύω, μέχρι εδώ. Στην επόμενη ώρα μετά το διάλειμμα θα κάνουμε μια συνάρτηση δική μας. Και μετά θα σας δείξω ένα πραγματικό κώδικα VBA που έχω γράψει για μια δική μου δουλειά. Μου εξυπηρετούσε για ένα φάσμα απόκρισης. Για να σας δείξω κάτι που είναι λίγο πιο ολοκληρωμένο. Ενώ εκεί θα δείτε ένα κώδικα-κώδικα, κανονικό. Αλλά να καταλάβετε λίγο πώς δουλεύει, εντάξει. Σας θυμίζω επίσης ότι η VBA έστω στην απλή της μορφή είναι θέμα εξετάσεων. Δηλαδή είναι εύκολες πέντε μονάδες. Εάν κάποιος όμως μπει στον κόπο να καταλάβει, κυρίως αυτά, πώς διαβάζω από κελί, πώς γράφω σε κελί, πώς διαβάζω μαζικά, πώς γράφω μαζικά, πώς παίρνω από διανύσματα και γράφω σε διανύσματα. Άμα το κάνεις αυτό, όλος ο υπόλοιπος κώδικας είναι κανονική VBA. Δεν μπορεί να είναι κάτι πιο δύσκολο αυτό. Σας είπα, ναι, αυτές έχει και άλλες εντολές. Έχει και άλλες, ναι, μόνο αυτές. Ναι, αυτές είναι δύο πραγματικές, γιατί μ' αυτές μπορείς ένα κώδικα που τον είχες να τρέχει, έτρεξες 10.000 γραμμές και το τελικό το αποτέλεσμα μόνο το βάλεις σε ένα κελί. Και μετά το εξέλει ως είχε. Εντάξει, είναι πάρα πολύ χρήσιμο, πραγματικά. Να κάνουμε διάλειμμα? Γράψαμε προηγουμένως ένα κώδικα απλό, λίγο ήσυχα παιδιά, με τον οποίο καταφέραμε να μιλήσουμε ουσιαστικά από τη VB στο Φίλο Εργασίας και αντίστροφα. Τώρα θα φτιάξουμε μια μορφή συνάρτησης, ουσιαστικά για να δείτε πώς μπορούμε να γράψουμε μια δική μας συνάρτηση. Και μόνο που είπαμε να γράψουμε σημαίνει ότι είναι ένας κώδικας κάποιο τρόπο, έτσι. Απλώς σύνθετος δεν έχει σημασία. Να θυμάστε ότι μια συνάρτηση πάντως στην πραγματικότητα είναι F του X, όπου το X είναι το όρισμα που το παίρνουμε μάλλον από ένα κελί και το F του X το γράφουμε σε ένα άλλο κελί. Για παράδειγμα, όπως είμαστε στο Φίλο Εργασίας, αν έχω οποιοδήποτε νούμερο, πες ότι αυτό είναι RAND, μπορώ να γράψω ίσον sign του X. Άρα τι σημαίνει εδώ, το όρισμα είναι κελί και το αποτέλεσμα μπαίνει στο κελί. Η συνάρτηση λέει sign και μου επιστρέφει την τιμή της για το δεδομένο όρισμα στο κελί που την έγραψα, έτσι δεν είναι. Θα μπορούσα εδώ τώρα, αντί να έχω μια sign, να έχω μια άλλη που να τη λένε αλλιώς. Και να παίρνει το K4, K13 μάλλον, αυτό και να το κάνει κάτι άλλο, έτσι δεν είναι. Στην προκειμένη περίπτωση λοιπόν, έχω φτιάξει μια πολύ απλή συνάρτηση η οποία τι κάνει. Λέει, θα μου πεις εσύ σε ποιο χρόνο έχει κατασκευαστεί μια οικοδομή, για παράδειγμα, ένα κτίριο. Και εγώ θα σου απαντήσω με ποιο κανονισμό έχει χτιστεί, σχεδιαστεί για την ακρίβεια. Δεν είναι κάτι δύσκολο, ουσιαστικά τι θα κάνει, θα έχω μια συνάρτηση που εδώ τη λέω ως με seismic code, παράδειγμα, ή σεσμικός κανονισμός, ή όπως θέλω να την ονομάζω, κοινά λατινική χαρακτήριας. Όπου το χ της, το όρισμά της, θα είναι το κελί κάποια κελί από αυτά, ενός ακεραίου δηλαδή. Και θα πέφτει αυτό μέσα σε ένα select case μάλλον, γιατί θα λέει, αν είναι πριν το 1959, έχει χτιστεί χωρίς αντισημικό κανονισμό. Αν είναι από το 59 μέχρι το 85, έχει γίνει με το βασιλικό διάταμα του 85, του 59. Αν έχει γίνει από το 85 μέχρι το 95, είναι με τις πρόσφες διατάξεις του 85. Αν είναι από το 95 μέχρι το 2000, είναι με τον ΝΕΑΚ, τον τότε νέον της συμπεριβαλλονισμός. Και αν είναι από το 2000 και μετά, είναι με τον ΕΑΚΕΚΟΣ. Και υποτίθεται, κάποια στιγμή, θα υπογραφεί ευρωκόδικας και από αυτό το έτος και μετά, θα είναι με ευρωκόδικα 8. Άρα, ας δούμε λίγο πώς δουλεύει. Σας προιδεάζω ότι υπάρχει κόδικας από πίσω που την περιγράφει τη συνάρτηση. Θα τον δούμε μετά. Αυτός, λοιπόν, μόλις πάτησα το S, μου εμφάνισε ότι εκτός από τις γνωστές head, second, series, sound, sign, κλπ. Έχει και μία που τη λένε seismic code. Άρα, σίγουρα, κάπου έχω γραμμένο στον κόδικα, μια function seismic code. Θα δούμε τι κάνει. Seismic code, λοιπόν, πιανού κελιού, αυτονού. Κλείνω κελί. Εντάξει, γιατί είναι 91. Άμα ήταν 2.000, θα ήταν νεάκ. Άμα ήταν 1.900, θα ήταν χωρίς. Άμα ήταν 2.013, εντάξει, ήταν πολύ φιλόδοξη η συνάρτηση. Θεώρησε ότι θα υπογραφεί ευρωκόδικας. Εντάξει, τα αλλάζουμε αυτοί, το βγάζουμε αν θέλουμε. Λοιπόν, και τι σημαίνει αυτό, ότι εφόσον αυτό είναι συνάρτηση, μπορώ να το αντιγράψω. Έτσι, δεν είναι μία συνάρτηση. Πώς έκανα, δεν θα αντέγραφα το κοσάνγι. Αντίστοιχα, εφόσον το όρισμα είναι η μεταβλητή μου εδώ μέσα, το I3, άμα το κάνω κόπι, το κουβαλάει. Να δούμε λίγο τι γράφει ο κόδικας από πίσω, να το καταλάβουμε. Πάμε πίσω στον κόδικα. Άλλτε 15. Η συνάρτησή μας είναι αυτή και είναι μέσα, τη γράφουμε συνήθως, μέσα στο module. Εδώ δεν είναι private sub ή public sub, δεν είναι υπορουτίνα, δεν είναι subroutine, είναι function, συνάρτηση. Και όταν λέμε συνάρτηση, εννοείται ότι είναι με όλη την επισυμότητα. Δηλαδή αν πάω εδώ στο insert function ας πούμε και γυρίσω κάπου θα έχει user defined υποθέτω, έχει τις δικές μου εδώ να τις βρω. Είναι επίσημη με όλες τις τιμές. Γιατί είναι επίσημη, γιατί την έχω δηλώσει σαν function. Αυτό είναι το όνομά της και αυτή είναι η μεταβλητή x. Εγώ εδώ την ονόμασα year of construction, δηλαδή στο f του x, το x πρέπει να έχει μία ονομασία, αλλά θα μπορούσε να ήταν και έτσι. Δεν έχει σημασία το όνομα, το όνομα θα μπορούσε να είναι οτιδήποτε. Η ουσία είναι ότι στην παρένθεση, ως όρισμα, θα πέσει ένα κελί. Αυτό το κελί θα αντιθεί προσωρινά το όνομα μιας μεταβλητής. Θέλεις να την πούμε έτος κατασκευής? Εντάξει, αρκεί στο select case να κρατήσουμε το έτος κατασκευής. Και εδώ κατά κάποιο τρόπο δηλώνει τι είναι το έτος κατασκευής, τι είναι το x και τι είναι το f του x. Λέει λοιπόν ότι το x που πέφτει μέσα είναι ακέραιος και αυτό που μου επιστρέφει είναι αριθμητικό, είναι κείμενο. Πράγματι, 1191 έβαλα, κείμενο μου έβγαλ. Καλά δεν λέω. Ωραία. Άλλο ανάλογο μπορείτε να σκεφτείτε μια συνάρτησης που εγώ ρίχνω ακέραιο μέσα και μου επιστρέφει κείμενο. Παράδειγμα, πάω στην εφορία, λέω του αφημίμου, του αφημίμου είναι ακέραιος. Άμα το χτυπήσει κανείς ο τάξης θα βγάλει το πιθετό μου. Αυτό είναι αριθμητικό. Έτσι δεν είναι. Άρα λοιπόν, μπορεί το x να είναι κάτι και το f του x να είναι κάτι άλλο. Ή ανάποδα, δηλώνω το x να είναι σέξτος και το f του x να είναι το αφημί και έναν ακέραιος. Ή το f του x να είναι ο αριθμός πινακίδας στον το κινείο του και να είναι αριθμητικό. Να έχει και γράμματα και ρυθμούς. Είτε αυτό. Εντάξει, δεν είναι υποχρεωτικό ότι είναι το x να είναι και το f του x. Αυτό ήθελα να σας πω. Έχει όλους τους συνδυασμούς. Εντάξει. Ωραία. Γιατί γελάτε. Λοιπόν, από εκεί και πέρα, στο select case έθνος κατασκευής, χρησιμοποιούμε γλώσσα που την ξέραμε. Δηλαδή, in case that it is μικρότερο του 59, τότε το seismic code θα ίσουται. Αυτό είναι η τιμή της συνάρτησης. Θα ίσουται με το κτίριο σχεδιάστηκε χωρίς κανονισμό. Case 1959 του 84, seismic code ίσον αυτό. Αντίστοιχα θα μπορούσα να αλλάξω αυτό. Να το πω έτσι. Να μην γράφω seismic code. Να γράφω μόνο αυτό. Καταλαβαίνετε λοιπόν τι αντιστοιχεί με τι. Αυτό είναι το όνομα της συνάρτησης. Λέει, αν το χί μου είναι αυτό, το ευτουχί μου είναι αυτό. Αυτό λέει. Ακριβώς αυτό λέει το select case. Αν το χί είναι αυτό, το ευτουχί δεν γίνει. Κατανοητό. Να το γράψουμε λίγο. Να το γράψουμε. Μην ξεχνάτε ότι κάθε συνάρτηση τελειώνει με end function. Πώς ένα sub τελειώνει με end sub, έτσι και ένα function τελειώνει με end function. Για γράψτε το λίγο να το δούμε. Ναι, κάντε ένα καινούργιο module και γράψτε το μέσα. Ας πάρουμε την περίπτωση που έχουμε φτιάξει ένα φάσμα σχεδιασμού, του EAC, του Ευρωκόδικα, του οποιοδήποτε κανόντισμου, και στην προκειμένη περίπτωση δεν μας ενδιαφέρει, πως θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε ένα σχεδιασμό, που θα μπορούσαμε να κάνουμε βαθύπτωση και συnentεί Plaid, παίζει μόνο που δεν έχει καθόλου βιμπί, έτσι όπως το κοιτάμε, ωραία. Εάν έρθω και αλλάξω το έδαφος και το κάνουμε, για παράδειγμα, το έδαφος από γ, το κάνουμε α, θα γίνει πιο υψησυχμό, ενώ αν το κάνουμε δ, θα γίνει πιο μακροπερίοδο. Εντάξει, άρα αυτό είναι ένα Excel, αλλάζουμε απλώς το συντελεστή συμπεριφοράς, αλλάζουμε την σπουδαιότητα, αλλάζουμε το συντελεστή θεμελίωσης, αλλάζουμε την απόσβεση, ό,τι θέλουμε, ωραία. Τι κάνει αυτό λοιπόν, έρχεται και υπολογίζει στην πραγματικότητα τις τιμές σε αυτήν εδώ τη στήλη, οι οποίες τιμές ξεκινούν από τα εξής πολύ απλά. Για η δυο περίοδο μηδέν, είναι στην πραγματικότητα η μέγιστη δαδική επιτάχυνση, επί γ, επί θ, ουσιαστικά η τιμή από όπου κρεμούμε το φάσμα, από εδώ. Η δεύτερη τιμή που έχει, είναι στην πρώτη χαρακτηριστική περίοδο, αν προσέξατε, αν το έδαφος από βραχώδες γίνει έδαφος β, τα κάτω τα τα φ1 και τα τα φ2 μεταβάλλονται αυτά τα γκρίζα. Αυτό είναι ένα εξέλωμος, ένα ειφ έχει, δεν είναι βιμπί αυτό. Συμφωνούμε μέχρι εδώ. Στην πραγματικότητα, λοιπόν, το μόνο πράγμα το οποίο αλλάζει είναι αυτές οι τρεις στήλες, οι δύο στήλες και το σχήμα. Το πρόβλημα είναι ότι επειδή δεν ξέρουμε εξ αρχής πόσο είναι το τα φ1, δεν μπορούμε να υπολογίσουμε εύκολα τις ενδιάμεσες τιμές, δηλαδή έχουμε μία τιμή εδώ και η επόμενη τιμή μας είναι στο τα φ1, αν προσέξατε, δηλαδή είναι στο μηδέν δύο, βλέπετε εδώ. Και η επόμενη τιμή είναι στο μηδέν οκτώ, είναι εδώ. Άρα εδώ μέσα δεν έχει τιμές αυτός πραγματικά, απλώς ένωσε τις τελείες. Έτσι μας λείπουν αυτές οι τιμές. Εμείς λοιπόν μπορεί να θέλουμε να κάνουμε γραμμική παρεμβολή και να συμπληρώσουμε τις τιμές που μας λείπουν, γιατί αυτό ήταν κάτι που δεν μπορείς εύκολα να φτιάξεις ένα εξελ. Δηλαδή θα πρέπει να το βάζεις να αλλάζεις συνάρτηση. Τώρα ξέρουμε ότι από μηδέν μέχρι μηδέν δύο εδώ παίρνει το πρώτο κλάδο. Από μηδέν δύο μέχρι μηδέν οκτώ είναι στο πλατό, είναι η δεύτερη εξίσωση. Από εκεί και πέρα είναι ένα μηδέν ένα, εντάξει, το βλέπουμε και παίρνει το δεύτερο κλάδο. Συμφωνούμε μέχρι εδώ. Άρα είναι ένα καθαρό εξελ, ουσιαστικά ξέρει ότι το πρώτο παίρνει από τον πρώτο τύπο πάντα, το δεύτερο και το τρίτο παίρνουν από τον δεύτερο τύπο πάντα και τα υπόλοιπα είναι ένα μηδέν ένα και παίρνουν από τον τρίτο τύπο πάντα. Αυτό εξελ. Εντάξει, έστω τώρα εγώ θέλω να γράψω ένα μικρό σκριπτάκι ούτως ώστε να μου υπολογίζει τη φασματική επιτάχυνση αν κάποιο βήμα που εγώ επιθυμώ και να μου δίνει όλες τις τιμές σε αυτό το βήμα. Να μη μου δίνει μόνο στη μηδέν δύο περίοδο στο ταφ 1 και στο ταφ 2. Θέλω για όλο το εύρος του φάσματος τιμές να μου δώσει στο χέρι να κάνω ένα συγκεκριμένο βήμα για να πάω να το βάλω στο πρόγραμμα που περασμένο στοιχείο μου χρησιμοποιούν και θα πω να το βάλω. Έτοιμα. Ποιος τι είστε? Εντάξει, οπότε τι κάνει αυτός. Έχει ένα κουμπάκι κατά τα γνωστά. Λέει, καταρχήν το βήμα της περιόδου έτσι όπως το βλέπω εγώ είναι 0,1. Πού το ξέρει? Διφόλτ. Ορίστε. Διφόλτ. Διφόλτ εδώ πήγε, βρήκε δύο συνεχόμενα και τα αφαίρεσε. Δηλαδή έκανε μεταβλητή κάποια. Ίσον, work, seats, seat, range, τι είναι αυτό α10. Μεταβλητή άλλη είναι α11. Αφαίρεσε το α10 από το α11. Πόσο μένει 0,1. Γράψε μου το message. Αυτό έκανε. Εντάξει. Μετά, πόσο θέλεις να κάνεις το βήμα σου. Στην πραγματικότητα τι έκανε. Γράφει κάπου μες στον κώδικα, εμφάνισέ μου τη φόρμα. Σας έδειξα πριν πως θυμάσουμε μια φόρμα και τώρα λέει εμφάνισέ τη φόρμα. Η φόρμα αυτή έχει ένα label, ένα textbox και δύο κουμπάκια. Δεν έχει τίποτα. Βάζουμε λοιπόν εμείς εδώ το βήμα, ας πούμε 0,05. Παράδειγμα. Πατάμε ok. Πολύ ωραία, το νέο βήμα περίοδου τάφ είναι ίσο προς 0,05. Γιατί τόσο του είπαμε, δεν έκαναμε τώρα πράξεις. Ok. Και πήγε και τάραψε εδώ. Δηλαδή ξαναδιατύπωσε όλες τις τιμές περιόδων και φασματικής επιτάχυνσης. Αλλά όταν λέμε όλες-όλες, δηλαδή 0,0,0,5,0,1,25,20,25 κλπ. Αυτό είναι πολύ βολικό. Προφανώς αυτός δεν πήγε καν στον κόπο να πάει εδώ μέσα και να κάνει γραμμική παρεμβολή. Κάνω. Ήξερε τους τύπους και δεν υπάρχει θέμα, θα γράψω. Από το 0 μέχρι το τέλος του πρώτου κλάδου θα γράψω με τον πρώτο τύπο, Από το τάφε ένα μέχρι το τάφε δύο θα γράψουμε το δεύτερο τύπο και από το τάφε δύο και πέρα θα γράψουμε τον τρίτο τύπο. Πού τα ξέρει αυτά τα πράγματα? Τα ξέρει γιατί τους τύπους τους έχουμε δώσει εμείς, τους δίνουμε μέσα στον κώδικα. Πώς ξέρει πόσα σημεία έχει στο ανερχόμενο κλάδο? Ξέρω πόσα σημεία έχω στον ανερχόμενο κλάδο. Α, δούμε αυτό για παράδειγμα. Δηλαδή από το μηδέν μέχρι το τάφε ένα. Μέχρι εδώ πόσα σημεία έχω. Είναι μηδέν κόμμα δύο δια μηδέν μηδέν πέντε συν ένα. Να σας το πω λίγο πιο απλά. Αν είχα τέσσερα δευτερόλεπτα να διανύσω και το βήμα μου ήταν μηδέν μηδέν ένα, θα ήταν τετρακόσια σημεία συν ένα βέβαια πάντα βάζω. Για παράδειγμα, εάν είχα ένα δευτερόλεπτο θα είχα στο μηδέν, στο ένα, στο δύο, στο τρία, στο τέσσερα. Άρα θα είχα πέντε σημεία. Έτσι δεν είναι. Άρα θα είχα τέσσερα δευτερόλεπτα δια ένα, τέσσερα, συν ένα, πέντε. Τώρα που έχω ένα μηδέν μηδέν ένα είναι τετρακόσια. Και ένα τετρακόσια ένα. Εφόσον λοιπόν πάω από εδώ μέχρι εδώ, από το μηδέν μέχρι το μηδέν κομμα δύο, δια μηδέν μηδέν πέντε, δηλαδή επί 20, ψυχιστικά είναι 20, το μηδέν κομμα δύο κάνει τέσσερα. Και ένα πέντε. Πέντε σημεία θα έχω λοιπόν από εδώ μέχρι εδώ. Πράγματι. Ένα, δύο, τρία, τέσσερα, πέντε. Κατανοητό. Άρα αυτά τα πέντε πήγαν με τον πρωτοτύπο. Και αυτός ήξερε ότι για τα πρώτα πέντε θα πάρεις τον πρωτοτύπο. Και πώς ξέρει πόσα σημεία έχω στο πλατό, μπορεί κάποιος να μου πει πόσα σημεία έχω εδώ πάνω. Στέφανος. 0,8 μηδέν κομμα δύο δια μηδέν κομμα μηδέν πέντε σημεία. Μπράβο. Άρα 0,06 δια μηδέν μηδέν πέντε, δηλαδή επί 20, 0,6 επί 20 κάνει ένα κομμα δύο. Έτσι δεν είναι? Ωραία. Κάτσε λίγο. 120 και είναι 121 σημεία. Άρα, όχι, 12 και 113. 12 και 113. Πράγματι, μετράμε εδώ, είναι 1,2,3,4,5,6,7,8,9,10,11,12, δεν βάζει 13 γιατί ξεκίνησα μέτρα από εδώ. Κανονικά άμα μετρούσα από το 0,2 θα ήταν 13. Αλλά επειδή αυτό το έβαλα στον προηγούμενο και του έδωσα να πάρει από το πρώτο τύπο, δεν μπορεί αυτό το σημείο να πάρει και από το δεύτερο τύπο. Καταλαβαίνετε πάνω-κάτω τι λέω. Το θέμα είναι με αυτά που θα γίνουν στον κώδικα. Λέγε. Η γέριση θα βγαίνει πάντα κεραίως. Φυσιολογικά βγαίνει, ναι. Δηλαδή ό,τι δήμα και να δώσει ή ό,τι τώρα... Όχι, άμα δώσεις 0,33 ή άμα δώσεις 0,16 ή 0,44 δεν θα βγει κεραίως. Δεν θα βγει κεραίως. Άρα, εδώ, πώς το έχω προγραμματίσει στο όνομα. Κι εγώ δεν έχω έλεγχο, αλλά ξέρω πρώτα απ' όλα ότι βάζω ένα εύλογο νούμερο. Διαφορετικά θα μπορούσα να πω ότι θα πρέπει να το χειριστώ. Δηλαδή θα ακολουθήσεις αυτό το βήμα, εντάξει, αλλά αυτό που θα σου περισσεύει, το τελευταίο βήμα θα είναι ό,τι περισσεύει. Δεν θα είναι ίδιο, πρέπει να το μαζεύεις. Πάμε λοιπόν στον κώδικα. Τι λέει ο κώδικας. Να η φόρμα μου, εντάξει, το label, το text box, button, button. Και έχω τον εξής κώδικα εδώ, που δεν είναι και τόσο τρομερός. Είναι αυτός, για να μην τρομάξετε, ας τα κατεβάσω λιγάκι. Λοιπόν, κατ' αρχήν είναι αυτά που εκτελούνται στο κλικ του command-button 1. Ποιο ήταν αυτό? Αυτό. Εντάξει, μετά. Έχουμε. Δηλώνουμε τις μεταβλητές. Τώρα εδώ δεν έχει νόημα να τις διαβάσουμε, καταλαβαίνετε ότι την ώρα που τις γράφω, μόλις τη γράψω και της δώσω ένα όνομα, ανεβαίνω. Πάει και τη δηλώνω. Έτσι, δεν έχει νόημα να σταθούμε σε αυτό. Πάμε τώρα να βγάλουμε το πρώτο μήνυμα, αυτό το μήνυμα, που έλεγε το βήμα της περιόδου ταφ είναι ίσο προς, αυτό είναι κείμενο, και το βήμα όσον το υπολόγησα. Το βήμα με τί είσαι ούτε, με μία μεταβλητή που λέγεται τη μη Α6 και μία μεταβλητή άλλη που λέγεται Α5. Σωστά. Όχι, δεν χρειάζεσα, δεν μπορούσα να τα βεχθίσω. Δεν αντιλαγώ, πάντως, γενικά δεν είναι καλό να προσταφερείς κελιά. Γενικά. Γι' αυτό και αν θα δεις εδώ μερικές σημειώσεις. Πρώτα απ' όλα, εκτός από το range, λέει και τελεία value. Γιατί εδώ την έχω δηλώσει τη μεταβλητή, δεν είναι οτιδήποτε. Το τιμή Α5, εδώ, το έχω πει ότι είναι double. Άρα δεν μου αρκεί απλώς να πάω να το πάρω από το κελί, πρέπει να πω και value. Είναι όπως βάζαμε το val του textbox στη DB την κανονική. Λοιπόν, το δεύτερο είναι ότι εδώ το worksheet λέγεται AAC και όχι C1, γιατί προφανώς κάποιος πήγε και με τονόμασε αυτό το φύλο εργασίας AAC. Άμα αυτό το αλλάξω και το κάνω 1, 2, 3, θα πρέπει και εδώ να πάω και να το αλλάξω και να το κάνω 1, 2, 3. Αλλιώς πως θα το δει, δεν θα υπάρχει. Έτσι δεν είναι. Πάμε παρακάτω. Εμφάνιση form. User form 1, τελείωσε. Τι κάνει, εμφανίζει αυτήν. Σωστά. Η διαφορά μεταξύ της VB και της VBA εδώ, είναι ότι τις ονομάζουμε form 1, form 2, form 3, ενώ στη VBA ονομάζονται user form 1. Είναι ο παλιός ο τρόπος που δηλωνόταν και στη VB6. Οι form λεγόταν user forms. Πάμε πίσω στον κωδικά μας. Όπως βλέπετε και αυτό επικαιροποιήθηκε. Βλέπετε εδώ που λέει C1, σε παρένθεση, το επονομαζόμενο 1, 2, 3. Αυτό θα πει. Η επόμενη εντολή που θα εκτελεστεί, θα βγάλει αυτό το μήνυμα μέσα της box, το νέο βήμα περίοδου τάφι είναι ίσο προς και νέο βήμα, όπου προφανώς νέο βήμα είναι η συνάρτηση. Μην τη βλέπετε έτσι τόσο παράξενη. Στην πραγματικότητα είναι αυτό. Δηλαδή ήταν userform1.textbox1.value. Από εκεί την πήρε την τιμή. Τα υπόλοιπα που γράφει, τα γράφει όλα και όλα γιατί θέλει. Δεν υπήρχε τότε το λεγόμενο math.round. Κι έκανε μια roundup, δηλαδή αυτό που ρώτησες προηγουμένως, το μάζευε εδώ, έκανε ένα roundup στον κυλοποίηση προς τα πάνω, στο δεύτερο δεκαδικό, δηλαδή και 0.16355 να γραφές, θα στο έκανε 0.17. Αυτό δεν σημαίνει ότι θα βγει ακέραιος, βέβαια, αλλά τέλος πάντων γλιτώνεις στο να έχεις πάρα πολλά δεκαδικά στο βήμα. Αυτό λοιπόν θα σημαίνει το roundup. Πάμε λοιπόν μετά. Αυτές τώρα είναι μια σειρά από εντολές, οι οποίες πολύ απλά γράφουν σε μεταβλητές, τιμές και λιών. Για να κάνουμε πράξεις. Δηλαδή, το απλούστερο. Η μεταβλητή PGA παίρνει από το φύλλο εργασίας, που λέγει Gotaneac, κάτσε να το ξαναγυρίσουμε γιατί αλλιώς δεν θα παίζει, ή αλλιώς θα πρέπει να τα αλλάζουμε όλη την ώρα. Και το άλλο επάνω εδώ. Και λέει ότι είναι στο φύλλο εργασίας αυτό, στο κελί H2. Ποιο είναι το H2? Punto, υποτίθεται ότι H είναι αυτό. Και το H2 είναι το 0.16. Άρα πήγε και έβαλε σε μια μεταβλητή την τιμή του κελιού H2. Και αντίστοιχα έκανε την ίδια διαδικασία για όλα αυτά εδώ, εκτός από το έδαφος. Το έδαφος δεν πήγε να το μαζέψει. Γιατί? Γιατί θα ήταν εμπελάς. Θα έπρεπε να πάρεις το έδαφος και να βάλεις select case. Αν το έδαφος είναι α, το τ'1 είναι τόσο και το τ'2 είναι τόσο. Αν το έδαφος είναι β, το τ'1 είναι τόσο και το τ'2 είναι τόσο. Αφού το έχω από κάτω, δεν πάω κατευθείαν να πάρω τα τ'1 και τα τ'2. Άρα αυτός είναι ένας συνδυασμός. Ό,τι μου είναι εύκολο το κάνω στο Excel και ό,τι μου είναι δύσκολο το κάνω στη τιμή. Δηλαδή αυτό είναι με ένα if στο Excel. Γινόταν και εδώ είναι με ένα if στο Excel. Θα μπορούσα να μην υπάρχει αυτό το if μέσα στο Excel και να το κάνω μέσα στον κόρητο. Αλλά αυτό το είχα γραμμένο, δεν έχω λόγο ξανά να γράψω. Από εκεί και πέρα, πήγα πήρα το τ'1, να το, πήρα το τ'2, πήρα την πιτσιλιά, πήρα το συντελεστή συμπεριφορά, πήρα το συντελεστή σπουδαιώτης, πήρα το συντελεστή τα μελούσες και πήρα και το συντελεστή απόσβεσης. Που υποτίθεται ότι τ' έβαλα ο χρήστης. Όλα εκτός από το τ'1 και το τ'2. Και μετά λέει υπολογισμός φασματικών τιμών και περιόδων για το νέο βήμα τάφ για τις τρεις περιοχές του φάσματος του άγνους μου. Δηλαδή πρώτον και κύριο, ποιος είναι ο αριθμός των νέων σημείων, δηλαδή πόσα ζεύγι έχω, ποιο είναι το number of period points, πόσα σημεία πρέπει να έχουν τα διανύσματά μου, τι διάσταση πρέπει να έχουν, δεν είναι τα τέσσερα δευτερόλεπτα διά το νέο βήμα συνένα. Αυτό δεν λέγαμε προηγουμένως. Αυτό το καταλαβαίνετε? Γιατί σταματάμε στα τέσσερα δευτερόλεπτα γενικώς και δεν βάζουμε 44 δευτερόλεπτα. Εντάξει, είδατε το φάσμα, δεν το έκανα να υπερβαίνει τα τέσσερα δευτερόλεπτα. Το μικρό σου, λέει Βασιλία. Εντάξει και δεν μπορούμε να τοκτείρουμε ή να το παίρνουμε πάνω από 4 δευτερόλεπτα. Είναι πολύ ακραίο. Δηλαδή υποτίθεται ότι είναι ο αριθμός των ορόφων δια 10 χοντρικά και αυτό επί 0,9 είναι μεταλλική κατασκευή, 0,85 πάνω κάτω. Αυτό σημαίνει ότι θα πρέπει να ήταν 40 κτίρια, 40 ορόφων. Εντάξει, δεν είναι πολύ συνδυσμένο. Σε κάθε περίπτωση καταλαβαίνουμε, αυτό συναντώταν και για την ερώτηση που έκανας προχθές στο σεμινάριο. Εσύ δεν την έκανες. Ε, ναι, ότι εντάξει υπάρχει σεισμική δυναμή στα 5 δευτερόλεπτα, αλλά συνήθως δεν είναι αυτή η κρίση. Επίσης οι σεισμικά μονομένες κατασκευές έχουν 2 δευτερόλεπτα, 2,5, μπορεί και 3. Πάντως δεν έχουν 15, αυτό θέλω να πω. Άρα λογικά από τα 4 και μετά δεν το υπολογίζουμε. Σε κάθε περίπτωση, πέραν του γεγονότος, τώρα δεν θέλω να σας μπερδέψω, αλλά για να είμαστε ακριβείς, κανονικά στις μεγάλες περιόδους σχεδιάζουμε για μετακινήσεις και όχι επιταχύνσεις. Αυτό δεν είναι της ώρας. Λοιπόν, τέλος πάντων, ο αριθμός των σημείων είναι 4 διαβήμα συν ένα. Και το πρώτο ερώτημα είναι πόσα σημεία έχει ο πρώτος κλάδος. Το απαντήσαμε προηγουμένως, είναι τάφ 1 διαβήμα συν ένα. Ο δεύτερος κλάδος είναι αυτό που είπες προηγουμένως, τάφ 2 μείον τάφ 1 διαβήμα. Δεν βάζω εδώ συν ένα, γιατί αυτό το έξτρα το πήρα προηγούμενος κλάδος. Number of points, third branch, στο τρίτο κλάδο είναι από τα 4 δευτερόλεπτα μείον το τάφ 2 διαβήμα. Και έτσι ήδη εδώ ξέρω πόσα σημεία έχω σε κάθε κλάδο και πόσα σημεία έχω στο τελικά. Το καταλαβαίνουμε? Πολύ ωραία. Μέχρι εδώ είναι γενικά βημπύ, με εξαίρεση εδώ που διαβάζουμε κελιά, αυτό το παράξανε το round-up που θα μπορούσαμε για εμείς να το κάνουμε. Και εδώ επίσης διαβάσαμε και κελιά και αφαιρέσαμε. Δηλαδή δεν είναι δύσκολο κώδικα. Συμφωνούμε? Ωραία, πάμε τώρα να κάνουμε το εξής. Θα πάμε στον πρώτο κλάδο και θα πούμε από 1 μέχρι αριθμό, αριθμό το σημείο που έχει ο πρώτος μας κλάδος, το ταφ i, η ιδιοπερίοδος δηλαδή είναι i-1 επιβήμα. Γιατί είναι i-1 και δεν είναι, γιατί λέω ταφ του i είναι i-1 επιβήμα? Γιατί η πρώτη ιδιοπερίοδος είναι στο μηδέν. Είναι μηδέν επιβήμα, η πρώτη πρώτη που θα βάλω στο διάνεσμα από το μηδέν ξεκινάω. Δεν ξεκινάω από το βήμα 0-0-5, έχω και μια περίοδο στο μηδέν. Και αντίστοιχα έχω και μια φασματική επιτάχυνση η οποία είναι Se του i, δηλαδή η πρώτη από αυτή είναι γ, επί PGA, επί 1 διά ταφ i, το οποίο είναι μηδέν στην προκειμένη περίπτωση, αλλά αυτός εδώ ο όρος μηδενίζεται και μένει ο όρος αυτός ο οποίος είναι η PGA επί το γ, αυτό συμβαίνει στο τέλος, είναι 1-0. Και μένει το γ 1 επί PGA. Είναι η τιμή από την οποία κρεμώ με το φάσμα μας. Αλήθεια, για ποιο λόγο όταν η περίοδος είναι μηδέν η φασματική επιτάχυση είναι ίδια με την PGA, για να καταλαβαίνουμε και τι κάνουν, Βασιλής. Γιατί η κατασκευή είναι τόσο άχρημη που κινείται μαζί με το φάσμα. Μπράβο. Μπορείς να μου πεις ένα παράδειγμα στη φύση που έχει δύο περίοδο μηδέν, υπάρχει τέτοιο πράγμα. Ένα υπόγειο, κάνουμε ένα πυρνικό καταφύγιο μέσα στο εδάφος που έχει δύο περίοδο μηδέν. Δεν ταλαντώνεται, τι να κάνουμε. Και έτσι πάει μαζί με την κίνηση του εδάφους. Δεν σημαίνει ότι δεν έχει επιτάχυση. Έχει. Απλώς η επιτάχυση είναι ίδια με την επιτάχυση του εδάφους. Τη μέγιστη δευκή επιτάχυση, δηλαδή πιγκ γκ, αυτό σημαίνει τάφισον μηδέν, σαν ταλαντωτής. Πολύ ωραία, μπράβο σας. Λοιπόν, από εκεί και πέρα, στο πλατό, είναι από 1. Προσέξτε, δεν λέει από Ά ή ίσον 1. Λέει από Ά ή ίσον, όσα σημεία ήδη είχα, συν 1, γιατί άμα του πω τώρα πάλι 1, θα πάει στο διάδεισμα στην πρώτη θέση και θα κάνει override. Εγώ έχω βάλει ένα μητρό και βάζω τις τιμές στη μία κατά την άλλη. Δεν μπορώ να βάλω τώρα πάλι πίσω στο 1, το καταλαβαίνουμε αυτό. Άρα οι τιμές μου σαν αύξον αριθμός είναι εκεί που τελείωσαν τα πρώτα μου σημεία, του πρώτου κλάδου, στο επόμενο. Μπήκα στο πλατό και φυσικά στο πλατό είναι σταθερό. Εδώ το S του Ά δεν έχει μέσα καθόλου Ά, γιατί είναι πλατό. Δεν εξαρτάται από την ίδιο περίοδο εδώ, αυτό είναι στατερό νούμερο. Το Γεωργός, Κώστας, πάνω. Αν δεν βγάζουμε κάτω στις 1, δεν ξεκινούσαμε από το number of boards, θα είναι στην ουσία του ίδιου σημείου. Συμφωνώ. Με αυτόν τον τρόπο, στο τέλος, στο τελευταίο σημείο, θα βγει και ένα με πάλι το τελευταίο σημείο. Θα βγάλουμε το στις 1 και θα πάμε στο επόμενο. Ναι, θα πάμε στο επόμενο. Θα βγούμε εκτός. Δεν βγούμε εκτός, ουσιαστικά συνεχίζεις εδώ, από εδώ. Έφτασες εδώ με το προηγούμενο, είχες φτάσει εδώ με το προηγούμενο και το επόμενο είναι το επόμενο. Ωραία. Αν κάνουμε τη λεγική αυτή, θα φτάσω στο τέλος, στο τέλος. Σε ποιο σημείο θα φτάσεις στο τέλος. Εδώ δεν θα βάλω συνένα. Ακριβώς γι' αυτό που λες. Ναι, συμφωνώ. Γι' αυτό και αν πάω παρακάτω, εδώ, στο τέλος, στο τέλος, στο τέλος, στο τέλος, εδώ, είναι, εκεί που τελειώσαν όλοι αυτοί εδώ, έως το number of period points. Ο τελευταίος ποιος ήτανε, ο 400 και αν όχι το 402. Εντάξει, τώρα αυτό δεν έχει... Είναι ένας κώδικας, θα μπορούσα να το οτιδήποτε. Εδώ το παντικήμενό μας δεν είναι το φάσμα σχεδιασμού. Είναι λίγο να καταλάβετε ότι μπορώ να γράφω κώδικα, να βάζω loop, να υπολογίζω διανύσματα κάπου μέσα σε έναν υπολογισμό. Και στο τέλος, αφού τα υπολογίσω αυτά, θα πάω πάρα πολύ ωραία και θα τα γράψω εδώ, με ένα loop από ένα μέχρι όλα μου τα σημεία. Τι κάνω, στο φύλλο εργασίας σε ACK, κελιά I, κόμμα δέκατη τέταρτη στήλη είναι, τώρα δεν θυμάμαι, κάπου εκεί δεξιά που γράφαμε, το N μάλλον. Και αυτό είναι το O. Γράψαμε την ίδιο περίοδο και γράψαμε τη φασιματική επιτάχυση. Και κάνω αυτό με τη σειρά όπως το κάναμε την προηγούμενη ώρα. Και γράψα το ένα κάτω από το άλλο. Απλώς τι κάνει, πριν κάνει αυτό, τα διαλέγει λίγο αυτό το range, κάνω ένα clear, τα σβήνει, γιατί μπορεί εγώ να γράψω ας πούμε πρώτα, τι να πω τώρα, πεντακόσεις γραμμές. Και μετά το ξανατρέχω με μεγαλύτερο βήμα και γράφω εκατό γραμμές. Θα μου έχουν μείνει τα σκουπίδια από κάτω. Οπότε για να μην περισσεύουν αυτά, πριν κάνεις οτιδήποτε ρίξε ένα clear, να καθαρίσουν οι στήλες και ξαναγράψε μετά ό,τι θες να γράψεις. Καταλάβαμε? Άρα, από το σημερινό μάθημα, αυτό πρέπει να μας μείνει, είναι ότι γενικά μπορούμε να γράψουμε διάφορα πράγματα, ίστο σε μια πεπαλαιωμένη έκδοση της Βιμπή, αλλά πολύ κοντά σε αυτά που ξέρουμε, μπορούμε να γράψουμε ένα κώδικα και εκεί που θα τελειώσει, είτε είναι διάνισμα και θα το γράψουμε σαν στήλες, σαν σειρές, σαν οτιδήποτε, είτε θα μπορεί να είναι το αποτέλεσμα και ένα με μονομένο κελί ας πούμε. Η ουσία είναι όμως ότι εγώ μπορεί να μιλήσω από φύλλο εργασίας στον κώδικα και από τον κώδικα στον φύλλο εργασίας. Και ενδιαμέσως θα μπορούσα να έχω περισσότερες από μία τέτοιες φόρμες. Και εδώ αρχίζει τώρα το ενδιαφέρον. Και γιατί τα αποτελέσματα αυτά, ας πούμε, να μου τα γράψει, τώρα είναι προκειμένου ότι θέλω να τα δω, αλλά μπορεί εγώ να θέλω να δω απλώς ένα σχήμα, ένα καινούργιο φάσμα. Η VB έχει την ιδιαιτερότητα, και σε αυτό είναι πάρα πολύ καλή μέσα στο Excel, μπορείς να φορτώσεις ένα picture box, κατά τα γνωστά, το οποίο όμως να διαβάζει live ένα σχήμα του Excel. Αυτό είναι πάρα πολύ καλό, γιατί αμέσως μας αναβάθουμε στα γραφικά μας. Είναι ένας πολύ ωραίος τρόπος και λόγος για τον οποίο μερικές φορές προτιμάς να γράψεις κάτι στη VB A με τα ωραία του διαγράμματα, παρά να γράψεις στη VB με εκείνα τα διαγράμματα, εκτός αν μπορείς να τα αντικαταστήσεις με τους τρόπους που είπαν. Βασίλισσα. Πρέπει πρώτα όπως όλα αυτά να τα γράψουν στο Excel, για να τα γράψουν στο διάγραμμα. Ναι, γιατί κοίταξε το Excel τι έχει. Έχει πάντα ένα διάγραμμα που διαβάζει live κάτι κελιά. Άρα λογικά εσύ, στο σκοτάδι, από αυτά που υπολόγησες, θα τα γράψεις τα γρήγορα στα κελιά, θα επικαιροποιηθεί το διάγραμμα και θα επικαιροποιηθεί και η φόρμα σου. Αυτό όμως που θέλω να πω είναι ότι μπορείτε να φτιάξετε μια εφαρμογή που στην πραγματικότητα ο χρήστης να μην βλέπει καθόλου τι γράφει και ξεγράφει στα κελιά. Και στα κελιά δεν είναι ανάγκη να τα γράψεις όλα, θα γράψεις μόνο αυτά που θα καθορίσουν τα διαγράμματά σου. Το σίγουρο είναι ότι αν αλλάξει κάτι, θα αλλάξουν τα κελιά, θα αλλάξει το διάγραμμα, θα αλλάξει αυτόματα και στη φόρμα σου το σχήμα. Και αυτό είναι πολύ ωραίο γενικός. Τώρα, αυτά φυσικά δεν μαθαίνονται σε ένα τρίο ώρα τώρα έτσι που κάναμε. Εντάξει, εννοείται, αλλά σας δίνω το ερέθισμα, σας λέω ότι μπορεί να κάνει κάποιος. Είναι αρκετά πρακτικό, ορίστε. Θα έχουμε VBA στην Axis. Σας δείξω κάτι... Στο Excel μπαίνεις στις εξετάσεις. Στο Excel μπαίνεις στις εξετάσεις. Με αυτό που είπα θα έρθουν οι μισοί ας πούμε. Εντάξει, άσα ξέρω εγώ τώρα, όταν είπα, ειδικά όταν πλησιάζουν οι εξετάσεις και λέω κάνουμε MATLAB που είναι εκτός εξετάσεων, εντάξει, έρχεται ένα κλάσμα. Αυτά είναι γνωστά. Αυτό που συντελήθηκε το MATLAB. Ναι, έχω γνώση ας πούμε από τα στατιστικά. Τι να κάνουμε, δεν πειράζει. Λοιπόν, η ουσία είναι πάντως είναι αρκετά χρήσιμο πράγμα. Συνεπώς, με αυτά κλείνουμε την ενότητα αυτή. Και θα τα πούμε την επόμενη εβδομάδα. |