Εισαγωγή...vii. Αυτοματοποίηση καθημερινών εργασιών. ΚΕΦΑΛΑΙΟ 1 Απλές εργασίες με μακροεντολές... 1

Σχετικά έγγραφα
Περιεχόμενα. Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών Μέρος 2: Χρήση υπολογιστή και διαχείριση αρχείων Πρόλογος...

Περιεχόμενα. Κεφάλαιο 1 Γνωριμία με το Excel... 9

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

Περιεχόμενα. Κεφάλαιο 1 Γνωριμία με το Excel...9

Αναπαραγωγή με αρχεία ήχου

Kεφάλαιο 11 Λίστες και Ανάλυση Δεδομένων Kεφάλαιο 12 Εργαλεία ανάλυσης πιθανοτήτων Kεφάλαιο 13 Ανάλυση δεδομένων...

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας

Λίγα λόγια από το συγγραφέα Microsoft Excel Η δομή ενός φύλλου εργασίας... 21

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

Οδηγός γρήγορης εκκίνησης

Γνωρίστε το Excel 2007

Περιεχόμενα. 1 Προετοιμασία βιβλίου εργασίας Εργασία με δεδομένα και πίνακες Excel 75. Ευχαριστίες Εισαγωγή στο Microsoft Excel

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στο PowerPoint...9. Κεφάλαιο 2 Εργασία με κείμενο... 39

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Microsoft Excel Κεφάλαιο 2: Η δομή ενός φύλλου εργασίας... 26

Περιεχόμενα. Εισαγωγή στο Word Βασικές μορφοποιήσεις κειμένων Κεφάλαιο 1. Κεφάλαιο 2

Ελέγξτε την ταινία σας

Περιεχόμενα. Γνωριμία με το Excel 1. Προετοιμασία βιβλίου εργασίας 23. Εκτέλεση υπολογισμών σε δεδομένα 35. Αλλαγή της εμφάνισης του εγγράφου 49

Υπολογιστικά Συστήματα

Πρότυπα βιβλίων εργασίας και ονόματα κελιών

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7

4 ο ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΓΕΝΙΚΟΣ ΣΚΟΠΟΣ :

Κεφάλαιο 1 Χρήση προτύπου 2. Κεφάλαιο 2 Τροποποίηση μιας παρουσίασης 9. Κεφάλαιο 4 Προσθήκη αντικειμένων 26. Κεφάλαιο 5 Ειδικά εφέ 35

Τι νέο υπάρχει στο Microsoft Excel

Εισαγωγή στο πρόγραμμα Microsoft word 2003

Βάσεις δεδομένων (Access)

Περιεχόμενα. Λίγα λόγια από τον συγγραφέα Microsoft Excel Η δομή ενός φύλλου εργασίας... 21

Υπολογιστικά Συστήματα

Περιεχόμενα. 1 Tο βιβλίο "με μια ματιά" Εισαγωγή στη Microsoft Access Γνωριμία με τις βάσεις δεδομένων της Access...

Τι νέο υπάρχει στο Microsoft Excel

Υπολογιστικά Συστήματα

Περιεχόμενα. Μέρος 1 Εισαγωγή στους υπολογιστές Μέρος 2 Windows Μέρος 3 Microsoft Office 2007 Τα βασικά

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Δημιουργία παρουσιάσεων με το PowerPoint

Ο Οδηγός γρήγορης εκκίνησης

Βασικές Λειτουργίες του Word

Πίνακας περιεχομένων. Πρόλογος... 11

Επιλογή ενός στοιχείου γραφήματος από μια λίστα στοιχείων γραφήματος

ΕΡΓΑΣΤΗΡΙΟ ΠΛΗΡΟΦΟΡΙΚΗ I. 3o ΕΡΓΑΣΤΗΡΙΟ ΕΠΕΞΕΡΓΑΣΙΑ ΜΕ ΤΟ WORD

Πρόλογος... xiii ΜΕΡΟΣ 1 1 Εισαγωγή στο Excel Βασικές λειτουργίες του Excel... 21

Κεφαλίδες και υποσέλιδα

Περιεχόμενα. 1 Εισαγωγή: Tο βιβλίο Τι νέο υπάρχει στο Excel Πρώτα βήματα στο Excel Ευχαριστίες...

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στο PowerPoint 9. Κεφάλαιο 2 Εργασία με κείμενο 41

Λίγα λόγια από το συγγραφέα Microsoft Word Δημιουργία νέου εγγράφου Το σύστημα Βοήθειας του Word...

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων

Περιεχόμενα ΜΕΡΟΣ 1. Πρόλογος... xiii. 1 Εισαγωγή στο Excel Βασικές λειτουργίες του Excel... 23

Επεξεργασία κειμένου: Word 2003

Λίγα λόγια από το συγγραφέα...7

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python. 1η Ομάδα Ασκήσεων

Τι νέο υπάρχει στη Microsoft Access Διορθώσεις, σχόλια, και βοήθεια...9. Χρήση του συνοδευτικού CD του βιβλίου...13

Γ3.3.Μ7 ΕΠΑΝΆΛΗΨΗ ΜΈΡΟΣ Α: ΈΝΝΟΙΕΣ ΤΙ ΕΊΝΑΙ Η VISUAL BASIC ΤΙ ΜΠΟΡΟΎΜΕ ΝΑ ΚΆΝΟΥΜΕ ΜΕ ΤΗ VISUAL BASIC ΑΝΤΙΚΕΊΜΕΝΑ: ΦΌΡΜΑ ΚΑΙ ΧΕΙΡΙΣΤΉΡΙΑ ΕΤΙΚΈΤΑ LABEL

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31

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

Περιεχόµενα. 1 Εισαγωγή: Λίγα λόγια για το βιβλίο Τι νέο υπάρχει στο Outlook Ξεκίνηµα Ευχαριστίες...

ΣΗΜΕΙΩΣΕΙΣ. στη γλώσσα προγραμματισμού. Γκέτσιος Βασίλειος

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7

ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ ΔΙΕΥΘΥΝΣΗ ΕΠΟΠΤΕΙΑΣ ΠΙΣΤΩΤΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ

Περιεχόμενα. Μέρος 1: Βασικές έννοιες της πληροφορικής Πρόλογος... 11

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Περιεχόμενα. Λίγα λόγια από το συγγραφέα...7 Κεφάλαιο 1: Προετοιμασία παρουσίασης...9. Κεφάλαιο 2: Διαχείριση παρουσίασης...44

να ακολουθήσουμε Έναρξη Όλα τα Προγράμματα και να ενεργοποιήσουμε την επιλογή Microsoft Word.

Υπολογιστικά Συστήματα

Περιεχόμενα. 1 Τι νέο υπάρχει στο Excel 2007; 65

Περιεχόμενα. Περιεχόμενα...v

Η. ΠΙΘΑΝΑ ΕΡΩΤΗΜΑΤΑ

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

Πίνακας περιεχομένων. Κεφάλαιο 1 Λειτουργίες βάσης δεδομένων Κεφάλαιο 2 Συγκεντρωτικοί πίνακες Πρόλογος... 11

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Microsoft Word ημιουργία νέου εγγράφου Το σύστημα Βοήθειας του Office...

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Συναρτήσεις στη Visual Basic 6.0

Βάσεις δεδομένων (Access)

Χρήση του Office 365 σε iphone ή ipad

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: PowerPoint Κεφάλαιο 2: Εκκίνηση του PowerPoint... 13

Microsoft Word 1. Κεφάλαιο 1: Δημιουργία εγγράφου 3

Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης

Βασικά Στοιχεία Μορφοποίησης

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

ΕΠΙΣΚΟΠΗΣΗ ΕΦΑΡΜΟΓΩΝ ΓΡΑΦΕΙΩΝ

(3) Από την εργαλειοθήκη επιλέξτε το εργαλείο «ετικέτας (Label)». Δημιουργήστε μια ετικέτα στην φόρμα σας.

Η Απάντηση. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Μηνύματα. 1. Πληκτρολογήστε την εντολή:

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Access 2. Φτιάχνοντας μια DB, πίνακες και εισαγωγή εξωτερικών δεδομένων

Ευχαριστίες Το βιβλίο "µε µία µατιά" Τι νέο υπάρχει στην Access Εισαγωγή στη Microsoft Access

«Οδηγίες χρήσης εφαρμογής Ενιαίου Συστήματος Πληρωμών»

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Αλλαγή της εμφάνισης κειμένου: μέγεθος γραμματοσειράς, είδος γραμματοσειράς

6 Το μικρό βιβλίο για το ελληνικό Word 2010

(Αντιγραφή) ή χρησιμοποιήστε το πληκτρολόγιο για να καταχωρίσετε τους αριθμούς των αντιγράφων. Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης

Ταξινόμηση Δεδομένων. 9 η Εργαστηριακή Άσκηση (Excel)

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo;

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. Microsoft Excel Μέρος 1

Πρακτικές οδηγίες για την Επεξεργασία Κειμένου

ΕΡΩΤΗΜΑΤΟΛOΓΙΟ ΣΧΟΛΕIΟΥ: ΕΓΧΕΙΡIΔΙΟ ΔΙΕΥΘΥΝΤΉ/ΝΤΡΙΑΣ. Doc.: CY7_CBA_ScQPrincipalManual.docx. Δημιουργήθηκε από: ETS, Core Α Contractor

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7 Κεφάλαιο 1: Windows XP Κεφάλαιο 2: Επιφάνεια εργασίας (desktop)... 15

ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΟΥ Explorer & Outlook 2013

Αναλυτικός Πίνακας Περιεχομένων

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. Microsoft Excel Μέρος 1

Transcript:

Περιεχόμενα Εισαγωγή...vii Βοήθεια......ix Χρήση του CD-ROM του βιβλίου......xi Ελεγχος του συστήματός σας...xv Συμβάσεις και χαρακτηριστικά του βιβλίου......x ΜΕΡΟΣ 1 Αυτοματοποίηση καθημερινών εργασιών ΚΕΦΑΛΑΙΟ 1 Απλές εργασίες με μακροεντολές... 1 Πώς η Visual Basic for Applications μιλά στο Excel...1 Δημιουργία μιας απλής μακροεντολής...4 Ταυτόχρονη αλλαγή πολλών ιδιοτήτων...9 Επεξεργασία καταγραμμένης μακροεντολής...13 Καταγραφή ενεργειών σε μακροεντολή...15 Υπογραφή προσωπικών μακροεντολών...19 ΚΕΦΑΛΑΙΟ 2 Δημιουργία μακροεντολής για πολύπλοκες εργασίες... 25 Διαίρει και βασίλευε...26 Πρώτη εργασία: άνοιγμα του αρχείου της έκθεσης...27 Εργασία δεύτερη: συμπλήρωση των ετικετών που λείπουν...33 Εργασία τρίτη: προσθήκη στήλης με ημερομηνίες...38 Εργασία τέταρτη: προσάρτηση στη βάση δεδομένων...40 Εργασία πέμπτη: διαγραφή του φύλλου εργασίας...46 Συναρμολόγηση των μερών...47 ΜΕΡΟΣ 2 Εξερεύνηση αντικειμένων ΚΕΦΑΛΑΙΟ 3 Εξερεύνηση βιβλίων και φύλλων εργασίας... 51 Τι είναι τα βιβλία εργασίας...55 Ανάλυση των φύλλων εργασίας...62 ΚΕΦΑΛΑΙΟ 4 Αντικείμενα γραφικών... 69 Εξερεύνηση των αντικειμένων γραφικών...69 Αντικείμενα γραφημάτων...78 Μαύρο!Ακαθόριστος σελιδοδείκτης, III Χρώμα!Ακαθόριστος σελιδοδείκτης, III

iv Microsoft Excel 2002 Visual Basic For Applications Βήμα Βήμα ΚΕΦΑΛΑΙΟ 5 Αντικείμενα περιοχής... 89 Αναφορά σε μια περιοχή...90 Μορφοποίηση περιοχής... 102 Καταχώριση τιμών και τύπων σε περιοχή... 108 Βελτίωση καταγραμμένων επιλογών... 116 ΚΕΦΑΛΑΙΟ 6 Αντικείμενα Συγκεντρωτικού Πίνακα... 121 ΜΕΡΟΣ 3 Δημιουργία Συγκεντρωτικού Πίνακα... 122 Προσαρμογή Συγκεντρωτικού Πίνακα... 131 Εξερεύνηση της Visual Basic ΚΕΦΑΛΑΙΟ 7 Έλεγχος της Visual Basic... 141 Χρήση συνθηκών... 142 Δημιουργία βρόχων... 148 Διαχείριση μεγάλων βρόχων... 155 ΚΕΦΑΛΑΙΟ 8 Επέκταση του Excel και της Visual Basic... 163 ΜΕΡΟΣ 4 Δημιουργία προσαρμοσμένων συναρτήσεων... 164 Χειρισμός σφαλμάτων... 170 Δημιουργία εύχρηστων μακροεντολών ΚΕΦΑΛΑΙΟ 9 Εκκίνηση μακροεντολών μέσω συμβάντων... 183 Δημιουργία προσαρμοσμένων γραμμών εργαλείων και μενού... 184 Δημιουργία προσαρμοσμένων κουμπιών διαταγών... 192 Χειρισμός συμβάντων φύλλων και βιβλίων εργασίας... 202 ΚΕΦΑΛΑΙΟ 10 Χρήση χειριστηρίων πλαισίων διαλόγου σε φύλλο εργασίας... 209 Χρήση αριθμομηχανής υπολογισμού αποπληρωμής δανείων... 210 Δημιουργία αριθμομηχανής υπολογισμού αποπληρωμής δανείων ανθεκτικής στα σφάλματα... 212 Λήψη τιμής από λίστα... 216 Προστασία του φύλλου εργασίας... 221 ΚΕΦΑΛΑΙΟ 11 Δημιουργία προσαρμοσμένης φόρμας... 225 Δημιουργία της διασύνδεσης της φόρμας... 225 Προετοιμασία λειτουργίας φόρμας... 240 Υλοποίηση της φόρμας... 246 Μαύρο!Ακαθόριστος σελιδοδείκτης, IV Χρώμα!Ακαθόριστος σελιδοδείκτης, IV

Περιεχόμενα v ΚΕΦΑΛΑΙΟ 12 Δημιουργία συστήματος πληροφοριών επιχείρησης... 255 Εξέταση υπάρχοντος Συστήματος Πληροφοριών Επιχείρησης... 256 Δημιουργία γραφήματος από βάση δεδομένων... 259 Έλεγχος της αναφοράς με μακροεντολές... 272 Δημιουργία διασύνδεσης γραφικών... 274 Συσκευασία της εφαρμογής... 284 Ευρετήριο... 295 Μαύρο!Ακαθόριστος σελιδοδείκτης, V Χρώμα!Ακαθόριστος σελιδοδείκτης, V

Εισαγωγή vii Εισαγωγή Το Microsoft Excel είναι ένα ισχυρό εργαλείο ανάλυσης και παρουσίασης πληροφοριών. Ένα από τα πλεονεκτήματα του Excel ήταν πάντοτε η γλώσσα μακροεντολών του (macro language). Από τότε που πρωτοεμφανίστηκε το Excel, αυτή ήταν η πιο εκτεταμένη και ευέλικτη γλώσσα μακροεντολών οποιουδήποτε προγράμματος λογιστικών φύλλων. Η Visual Basic for Applications (VBA) εμφανίστηκε για πρώτη φορά ως τμήμα του Excel 5. Για την ακρίβεια, το Excel ήταν η πρώτη μεγάλη εφαρμογή που συμπεριέλαβε αυτή τη νέα συναρπαστική αρχιτεκτονική. Από το Excel 97, η VBA έγινε ένα πλήρες περιβάλλον ανάπτυξης, απολύτως συμβατό με την αυτόνομη έκδοση της Visual Basic και κοινό σε όλες τις εφαρμογές του Microsoft Office. Για να αρχίσετε να γράφετε μακροεντολές στο Excel, πρέπει να αποκτήσετε δύο διαφορετικές ικανότητες. Πρώτον, πρέπει να μάθετε να δουλεύετε με τη VBA. Οτιδήποτε μάθετε για τη VBA ισχύει όχι μόνο για το Excel, αλλά και για άλλες εφαρμογές που έχουν ενσωματωμένη τη VBA. Δεύτερον, πρέπει να μάθετε να ελέγχετε το Excel. Όσο περισσότερα μαθαίνετε για το Excel ως εφαρμογή λογιστικών φύλλων, τόσο πιο αποδοτικοί μπορείτε να γίνεστε στη δημιουργία μακροεντολών που ελέγχουν το Excel. Επειδή αυτό το βιβλίο επικεντρώνεται στη VBA ως περιβάλλον ανάπτυξης του Excel, τα περισσότερα από αυτά που θα μάθετε θα σας βοηθήσουν να γίνετε πιο αποτελεσματικοί και στη χρήση των λογιστκών φύλλων. Το βιβλίο Microsoft Excel 2002 Visual Basic for Applications Βήμα βήμα σάς μαθαίνει μία-μία τις διάφορες εργασίες, με σαφείς οδηγίες και συχνές απεικονίσεις αυτών που πρέπει να βλέπετε στην οθόνη σας, ώστε να μη χάνετε το δρόμο σας. Σε κάθε κεφάλαιο, γνωρίζετε άλλη μία σημαντική έννοια του Excel ή της VBA. Αμέσως μόλις ξεκινήσετε το Microsoft Excel 2002, θα παρατηρήσετε κάποιες αλλαγές. Οι γραμμές εργαλείων και η γραμμή μενού έχουν νέα μορφή, και υπάρχει ένα νέο παράθυρο εργασιών (task pane) στη δεξιά πλευρά τηςοθόνης σας. Όμως, οι λειτουργίες που είναι καινούργιες ή σημαντικά βελτιωμένες στη νέα έκδοση του Excel έχουν να κάνουν με πολύ περισσότερα πράγματα από αλλαγές στην εμφάνιση. Μερικές αλλαγές θα τις δείτε μόνον αφού αρχίσετε να χρησιμοποιείτε το πρόγραμμα. Για περισσότερες πληροφορίες σχετικά με το προϊόν του Excel, επισκεφθείτε τη διεύθυνση http://www.microsoft.com/excel. Μαύρο!Ακαθόριστος σελιδοδείκτης, VII Χρώμα!Ακαθόριστος σελιδοδείκτης, VII

ΚΕΦΑΛΑΙΟ Μετά την ολοκλήρωση αυτού του κεφαλαίου, θα μπορείτε: Να χρησιμοποιείτε εντολές συνθήκης. Να δημιουργείτε βρόχους χρησιμοποιώντας τρεις διαφορετικές δομές. Να ανακτάτε τα ονόματα των αρχείων ενός φακέλου. Να δημιουργείτε σημεία διακοπής για την αποσφαλμάτωση μεγάλων βρόχων. Να εμφανίζετε την πρόοδο καθώς μια μακροεντολή εκτελεί ένα βρόχο. Flow.xls Orders.dbf Βγείτε από το αυτοκίνητό σας και σταθείτε για λίγο έξω από αυτό. Κοιτάξτε προς τα κάτω, στο πέλμα του μπροστινού δεξιού ελαστικού του. Βλέπετε αυτό το μικρό κομμάτι τσίχλας που είναι κολλημένο στο πέλμα; Ε, λοιπόν φανταστείτε ότι είστε αυτό το μικρό κομμάτι τσίχλας. Φανταστείτε πώς θα νοιώθατε τη στιγμή που το αυτοκίνητο αρχίζει να κινείται. Από το πεζοδρόμιο ανεβαίνετε όλο και πιο ψηλά, σαν να ήσαστε μια ρόδα του λούνα-παρκ. Στη συνέχεια βιώνετε μια συγκλονιστική εμπειρία καθώς κατεβαίνετε από την άλλη πλευρά. (Ποιος έχει ανάγκη την Ντίσνεϋλαντ;) Δε νομίζετε όμως ότι μετά από πέντε εκατομμύρια περιστροφές θα αρχίζατε ίσως να βαριέστε; Μετά από κάποιο διάστημα η όλη διαδικασία ίσως καταντήσει βαρετή. Ό,τι και αν κάνετε είναι ενδιαφέρον τουλάχιστον τις πρώτες φορές που το κάνετε. Ω- στόσο, η επανάληψη μπορεί να κάνει τα πάντα βαρετά. Όταν αρχίσετε να κάνετε την ίδια δουλειά ξανά και ξανά, τότε θα θελήσετε κάποιος άλλος ή κάτι άλλο να σας απαλλάξει από αυτή. Στο κεφάλαιο αυτό θα μάθετε πώς να καταγράψετε μια επαναλαμβανόμενη εργασία ως μακροεντολή την οποία στη συνέχεια θα μετατρέψετε σε μια μικρή μηχανή που λειτουργεί αδιάκοπα για να κάνει τη ζωή σας ευκολότερη. Το κεφάλαιο αυτό χρησιμοποιεί τα αρχεία εξάσκησης Flow.xls και Orders.dbf τα οποία έχετε εγκαταστήσει από το CD-ROM του βιβλίου. Για λεπτομέρειες σχετικά με την εγκατάσταση των αρχείων εξάσκησης δείτε την ενότητα "Χρήση του CD-ROM του βιβλίου" στην αρχή του βιβλίου. Ξεκίνημα 1 Ξεκινήστε το Microsoft Excel και μεταφερθείτε στο φάκελο που περιέχει τα αρχεία εξάσκησης του βιβλίου. 2 Ανοίξτε το βιβλίο εργασίας Flow και αποθηκεύστε ένα αντίγραφο ως Chapter 07. Χρήση συνθηκών Έλεγχος της Visual Basic Οι καταγραμμένες μακροεντολές, για να πούμε τα πράγματα με το όνομά τους, είναι ανόητες. Μπορούν να επαναλάβουν αυτό που κάνατε τη στιγμή που καταγράφατε τη μακροεντολή, αλλά δεν έχουν την ικανότητα να συμπεριφέρονται διαφορετικά σε διαφορετικές περιστάσεις. Δεν μπορούν να παίρνουν αποφάσεις. Ο μόνος τρόπος για να κάνετε τις μακροεντολές σας πιο "έξυπνες" είναι να τους προσθέσετε εσείς την ικανότητα λήψης αποφάσεων. Μαύρο 151 Χρώμα 151

142 Microsoft Excel 2002 Visual Basic For Applications Βήμα Βήμα Λήψη απόφασης Το βιβλίο εργασίας Chapter07 περιέχει μια μακροεντολή που ονομάζεται MoveRight. Η μακροεντολή MoveRight έχει την εξής μορφή: Sub MoveRight() ActiveCell.Offset(0, 1).Select Αυτή η μακροεντολή επιλέγει το κελί που βρίσκεται στα δεξιά του ενεργού κελιού. Της έχουν ανατεθεί τα πλήκτρα συντόμευσης CTRL+SHIFT+R. Αυτή η μακροεντολή λειτουργεί άψογα τις περισσότερες φορές τουλάχιστον. 1 Με επιλεγμένο το κελί Α1, πατήστε CTRL+SHIFT+R. H μακροεντολή θα επιλέξει το κελί Β1. 2 Πατήστε CTRL+ΔΕΞIO ΒΕΛΟΣ για να επιλέξετε το κελί IV1, το τελευταίο δεξιά κελί της πρώτης γραμμής, και μετά πατήστε CTRL+SHIFT+R. H Microsoft Visual Basic θα εμφανίσει ένα μήνυμα σφάλματος. Δεν μπορείτε να επιλέξετε το κελί που βρίσκεται στα δεξιά του τελευταίου δεξιά κελιού. Θα εμφανιστεί ένα ενοχλητικό μήνυμα σφάλματος. Είναι προτιμότερο η μακροεντολή σας να μην κάνει τίποτα εφόσον δεν μπορεί να μετακινηθεί δεξιά. Επαναφορά 3 Πατήστε στο κουμπί Debug (Αποσφαλμάτωση) για να επιστρέψετε στον κώδικα και έπειτα πατήστε στο κουμπί Reset (Επαναφορά) ώστε να σταματήσετε τη μακροεντολή. 4 Προσθέστε την εντολή If ActiveCell.Column < 256 Then μετά την εντολή Sub. Τοποθετήστε σε εσοχή την κύρια εντολή και προσθέστε την εντολή End If πριν από την εντολή. H αναθεωρημένη μακροεντολή θα πρέπει να έχει την παρακάτω μορφή: Sub MoveRight() If ActiveCell.Column < 256 Then ActiveCell.Offset(0, 1).Select End If Μια εντολή If (μια εντολή που αρχίζει με τη λέξη If) συνδυάζεται με μια εντολή End. Το σύνολο των εντολών που υπάρχουν από την If μέχρι την End If ονομάζεται δομή If. Η Visual Basic εξετάζει την παράσταση που βρίσκεται αμέσως μετά τη λέξη If και προσδιορίζει αν πρόκειται για παράστασηtrue ή False (Αληθή ή Ψευδή). Αυτή η παράσταση True ή False ονομάζεται παράσταση συνθήκης. Εάν η παράσταση είναι True (Αληθής), με μια απλή εντολή If όπως αυτή του παραδείγματος η Visual Basic εκτελεί όλες τις εντολές που βρίσκονται μεταξύ των εντολών If και End If. Αν η παράσταση είναι False (Ψευδής), η Visual Basic περνάει απευθείας στην εντολή End If. Θα πρέπει πάντοτε να προσθέτετε τη λέξη Then στο τέλος της εντολής If. 5 Επιστρέψτε στο Excel, επιλέξτε το κελί IS1 και έπειτα πατήστε CTRL+SHIFT+R τέσσερις ή πέντε φορές. Η μακροεντολή μετακινεί το ενεργό κελί προς τα δεξιά μέχρι να καταλήξει στο τελευταίο κελί. Στη συνέχεια δεν κάνει τίποτε, ακολουθώντας επακριβώς τις οδηγίες σας. Μαύρο 152 Χρώμα 152

Κεφάλαιο 7: Έλεγχος της Visual Basic 143 Μπορείτε να κάνετε τη μακροεντολή αρκετά έξυπνη ώστε να μπορεί να αποφύγει κάποιο σφάλμα. Ο καταγραφέας μακροεντολών δε θα δημιουργήσει ποτέ μια δομή If. Αυτού του είδους η απόφαση ανήκει καθαρά στη Visual Basic και πρέπει να την προσθέσετε εσείς. Ευτυχώς όμως, η προσθήκη της δομής If είναι εύκολη υπόθεση. 6 Σκεφθείτε μια ερώτηση στην οποία να μπορείτε να απαντήσετε με ένα "Ναι" ή ένα "Όχι". Στο συγκεκριμένο παράδειγμα, η ερώτηση είναι "Ο αριθμός στηλών του ενεργού κελιού είναι μικρότερος από 256;" Στη συνέχεια μπορείτε να μετατρέψετε την ερώτηση αυτή σε παράσταση συνθήκης True ή False μιας εντολής If. 7 Τοποθετήστε τη λέξη If εμπρός από την παράσταση συνθήκης και τη λέξη Then μετά από τη λέξη If. 8 Σκεφθείτε πόσες εντολές θέλετε να εκτελέσετε αν η επιστρεφόμενη τιμή της παράστασης συνθήκης είναι True (Αληθής). 9 Τοποθετήστε μια εντολή End If μετά την τελευταία εντολή που θέλετε να ελέγχεται από τη δομή If. Η χρήση των δομών If κάνει πιο έξυπνες τις μακροεντολές σας. Διπλή απόφαση Μερικές φορές, όπως στις περιπτώσεις που προσπαθείτε να αποφύγετε κάποιο σφάλμα, θέλετε η μακροεντολή σας να εκτελείται μόνον αν η παράσταση συνθήκης είναι True (Αληθής). Άλλες φορές θέλετε η μακροεντολή σας απλώς να συμπεριφέρεται διαφορετικά ανάλογα με την απάντηση στο ερώτημα. Για παράδειγμα, ας υποθέσουμε ότι θέλετε μια μακροεντολή η οποία να μετακινεί το ε- νεργό κελί προς τα δεξιά αλλά μόνο μέσα στις πρώτες πέντε στήλες του φύλλου εργασίας. Όταν το ενεργό κελί φτάσει στην πέμπτη στήλη, θέλετε να επιστρέψει στο πρώτο κελί της επόμενης γραμμής, όπως μια γραφομηχανή. Σε αυτή την περίπτωση, θέλετε η μακροεντολή σας να πραγματοποιεί μία ενέργεια αν η στήλη του κελιού βρίσκεται στην πέμπτη ή σε μικρότερη θέση (να μετακινείται προς τα δεξιά) και μια διαφορετική ενέργεια στην αντίθετη περίπτωση (να μετακινείται προς τα κάτω και να επιστρέφει στην αρχή). Μπορείτε να δώσετε στη μακροεντολή τη δυνατότητα να επιλέγει μεταξύ δύο ενεργειών, προσθέτοντας ένα δεύτερο τμήμα στη δομή If. 1 Πηγαίνετε στο παράθυρο Visual Basic Editor και μετατρέψτε τον αριθμό 256 της εντολής If σε 5. 2 Προσθέστε την εντολή Else πριν από την εντολή End If και πατήστε το πλήκτρο ENTER. Έπειτα πατήστε το πλήκτρο TAB και προσθέστε την εντολή Cells(ActiveCell.Row + 1, 1).Select μετά την εντολή Else. H αναθεωρημένη μακροεντολή θα πρέπει να έχει την εξής μορφή: Sub MoveRight() If ActiveCell.Column < 5 Then ActiveCell.Offset(0, 1).Select Else Cells(ActiveCell.Row + 1, 1).Select End If Η εντολή Else απλώς λέει στη Visual Basic ποια ή ποιες εντολές να εκτελέσει αν η παράσταση συνθήκης είναι False (Ψευδής). 3 Πατήστε επανειλημμένα το F5 για να εκτελέσετε τη μακροεντολή. Βλέπετε την επιλογή να μετακινείται προς τα δεξιά και έπειτα να επιστρέφει στη στήλη Α, δηλαδή να κάνει περίπου αυτό που κάνει και μια γραφομηχανή. Μαύρο 153 Χρώμα 153

144 Microsoft Excel 2002 Visual Basic For Applications Βήμα Βήμα Όταν φτάσετε εδώ η μακροεντολή μεταφέρει την επιλογή εδώ. Μια δομή If μπορεί να περιέχει ένα μοναδικό τμήμα το οποίο εκτελεί εντολές μόνον αν η παράσταση συνθήκης είναι True (Αληθής), ή δύο ή περισσότερα μέρη τα οποία εκτελούν ένα σύνολο εντολών αν η παράσταση συνθήκης είναι True (Αληθής) και ένα διαφορετικό σύνολο εντολών αν είναι False (Ψευδής). Συμβουλή Μια δομή If μπορεί επίσης να γίνει πολύ πιο σύνθετη σε σχέση με τις δύο αυτές εναλλακτικές εντολές. Για να μάθετε περισσότερες λεπτομέρειες για τις δομές if, πληκτρολογήστε τις λέξεις if then στο πλαίσιο Ask A Question του βοηθήματος Visual Basic Editor. Κάντε στον εαυτό σας μια ερώτηση Στο Κεφάλαιο 2 δημιουργήσατε μια μακροεντολή η οποία σας ζητούσε να καταχωρίσετε μια ημερομηνία. Για να το κάνετε αυτό, χρησιμοποιήσατε τη συνάρτηση InputBox της Visual Basic. H συνάρτηση InputBox είναι ιδανική για να κάνετε μια ερώτηση, αλλά πρέπει να προσέχετε τι θα συμβεί όταν πατήσετε στο κουμπί Cancel (Άκυρο). To βιβλίο εργασίας Chapter07 περιέχει μια μακροεντολή που ονομάζεται TestInput, η ο- ποία σας ζητάει την ημερομηνία. Η μορφή του κώδικα αυτής της μακροεντολής θα πρέπει να σας είναι γνωστή. Sub TestInput() Dim mydate As String mydate = InputBox("Enter Month in MMM-YYYY format") MsgBox "Continue the macro" Η μακροεντολή σάς ζητά να καταχωρίσετε μια ημερομηνία. Στη συνέχεια, εμφανίζει ένα απλό πλαίσιο μηνύματος το οποίο σας πληροφορεί ότι εκτελείται το υπόλοιπο της μακροεντολής. 1 Πατήστε στη μακροεντολή TestInput. Πατήστε F5 για να εκτελέσετε τη μακροεντολή, πληκτρολογήστε Nov-2002 ως ημερομηνία, και έπειτα πατήστε στο ΟΚ. Θα εμφανιστεί το πλαίσιο μηνύματος το οποίο προσομοιώνει το υπόλοιπο της μακροεντολής. Πληκτρολογήστε μια ημερομηνία και έπειτα πατήστε στο ΟΚ. Πατήστε πάλι στο ΟΚ για να συνεχιστεί η μακροεντολή. 2 Πατήστε στο ΟΚ για να κλείσετε το πλαίσιο μηνύματος. Μαύρο 154 Χρώμα 154

Κεφάλαιο 7: Έλεγχος της Visual Basic 145 3 Πατήστε F5 για να εκτελέσετε ξανά τη μακροεντολή, αλλά αυτή τη φορά πατήστε στο Cancel (Άκυρο) όταν σας ζητηθεί να καταχωρίσετε την ημερομηνία. Το πλαίσιο μηνύματος θα εμφανιστεί και πάλι, παρόλο που ίσως περιμένατε ότι πατώντας στο κουμπί Cancel (Άκυρο) ακυρώνετε αυτό που ξεκινήσατε. 4 Πατήστε στο ΟΚ για να κλείσετε το πλαίσιο μηνύματος. Αν θέλετε η μακροεντολή να συνεχίσει, χρειάζεστε ένα ερώτημα το οποίο να απαντάται με "Ναι". Ένα κατάλληλο ερώτημα θα ήταν το εξής: "Έχετε καταχωρίσει κάτι στο πλαίσιο;" Αν πατήσετε στο κουμπί Cancel είναι σαν να αφήνετε το πλαίσιο κενό. Είτε πατήσετε στο Cancel είτε αφήσετε το πλαίσιο κενό, η συνάρτηση InputBox θα επιστρέψει ένα κενό αλφαριθμητικό (που αντιστοιχεί σε δύο ερωτηματικά με κενό ανάμεσά τους). Ο τελεστής <> (γωνιακές αγκύλες) σημαίνει "διάφορο από". Είναι το αντίθετο του ίσον. 5 Πριν από την εντολή MsgBox, προσθέστε την εντολή If mydate <> ""Then. Πριν από την εντολή προσθέστε End If. Τοποθετήστε σε εσοχή την εντολή που βρίσκεται μέσα στη δομή If. H αναθεωρημένη μακροεντολή θα πρέπει να έχει την εξής μορφή: Sub TestInput() Dim mydate As String mydate = InputBox("Enter Month in MMM-YYYY format") If mydate <> "" Then MsgBox "Continue the macro" End If 6 Πατήστε F5 για να εκτελέσετε τη μακροεντολή. Πληκτρολογήστε μια ημερομηνία και πατήστε στο ΟΚ. Η μακροεντολή "συνεχίζεται". 7 Πατήστε στο ΟΚ για να κλείσετε το πλαίσιο μηνύματος. 8 Τώρα εκτελέστε ξανά τη μακροεντολή, αλλά αυτή τη φορά πατήστε στο Cancel όταν σας ζητηθεί ημερομηνία. Η μακροεντολή θα σταματήσει ήσυχα. Κάθε φορά που επιτρέπετε την καταχώριση στοιχείων από το χρήστη σε μια μακροεντολή, πρέπει να βεβαιώνεστε ότι ο χρήστης έχει την ευκαιρία να ακυρώσει τη μακροεντολή. Ελέγξτε για έγκυρη καταχώριση Ελέγχοντας για κενό αλφαριθμητικό, μπορείτε να δείτε αν ο χρήστης πάτησε στο κουμπί Cancel, αλλά αυτό δε σας βοηθάει να προσδιορίσετε αν η τιμή που καταχωρίστηκε στο πλαίσιο είναι έγκυρη. Μπορείτε να προσθέσετε ένα δεύτερο έλεγχο για την τιμή της καταχώρισης. 1 Εκτελέστε ξανά τη μακροεντολή TestInput, αλλά αυτή τη φορά πληκτρολογήστε hippopotamus στο πλαίσιο εισαγωγής και πατήστε στο ΟΚ. Η μακροεντολή συνεχίζει όπως θα έκανε αν είχατε καταχωρίσει μια ημερομηνία. Αν πληκτρολογήσετε μια άκυρη ημερομηνία η μακροεντολή συνεχίζεται. Μαύρο 155 Χρώμα 155

146 Microsoft Excel 2002 Visual Basic For Applications Βήμα Βήμα 2 Πατήστε στο ΟΚ για να κλείσετε το πλαίσιο μηνύματος. Αυτό θα μπορούσε να δημιουργήσει πρόβλημα. Πρέπει να ελέγξετε αν το πλαίσιο είναι κενό, αλλά πρέπει επίσης να ελέγξετε αν η ημερομηνία είναι έγκυρη. Η Visual Basic διαθέτει μια συνάρτηση IsDate η οποία θα σας πει αν η Visual Basic μπορεί να ερμηνεύσει μια τιμή ως ημερομηνία. Ωστόσο, πρέπει να ελέγχετε την ημερομηνία μόνον αν ο χρήστης δεν έχει πατήσει στο Cancel. Εδώ απαιτούνται ένθετες δομές If. 3 Αλλάξτε τη μακροεντολή ώστε να έχει την παρακάτω μορφή: Sub TestInput() Dim mydate As String mydate = InputBox("Enter Month in MMM-YYYY format") If mydate <> "" Then If IsDate(myDate) Then MsgBox "Continue the macro" Else MsgBox "You didn t enter a date" End If End If Βεβαιωθείτε ότι έχετε τοποθετήσει σε εσοχή κάθε εντολή με τρόπο ώστε να είναι σαφές ποια εντολή αντιστοιχεί σε ποια If ή End. Η Visual Basic δεν απαιτεί ακριβή τοποθέτηση σε εσοχή, αλλά η εσοχή είναι απαραίτητη επειδή βοηθάει εσάς (ή οποιονδήποτε άλλο μετά από εσάς) να ερμηνεύσετε τη μακροεντολή με τον ίδιο τρόπο με τον οποίο την ερμηνεύει η Visual Basic. 4 Εκτελέστε τη μακροεντολή τουλάχιστον τρεις φορές. Δοκιμάστε τη με μια έγκυρη ημερομηνία, με μια άκυρη ημερομηνία, και με ένα πάτημα στο Cancel. Οι έγκυρες και άκυρες καταχωρήσεις θα πρέπει να εμφανίζουν τα αντίστοιχα μηνύματα. Αν πατήσετε στο Cancel ή αν αφήσετε το πλαίσιο κενό δεν πρέπει να εμφανιστεί κανένα μήνυμα. Συμβουλή Η Visual Basic μπορεί να ερμηνεύσει διάφορες μορφές ως ημερομηνίες. Δοκιμάστε διάφορες μορφές ημερομηνίας, όπως 11.02, για να δείτε ποιες ερμηνεύονται ως ημερομηνίες από τη Visual Basic. H χρήση της συνάρτησης InputBox μπορεί να αποτελέσει ιδιαίτερα πολύτιμο εργαλείο για να κάνετε μια μακροεντολή χρήσιμη σε ποικιλία περιστάσεων. Πρέπει όμως να είστε προσεκτικοί και να ελέγχετε το αποτέλεσμα της συνάρτησης InputBox πριν συνεχίσετε τη μακροεντολή. Κατά κανόνα, πρέπει να ελέγχετε τις τρεις παρακάτω πιθανότητες: έγκυρη εισαγωγή, άκυρη εισαγωγή, και ακύρωση. Μια δομή If και μερικές φορές μια ένθετη δομή If μπορεί να κάνει τη μακροεντολή σας αρκετά έξυπνη ώστε να ανταποκρίνεται σε όλα τα ενδεχόμενα. Κάντε ερωτήσεις με μηνύματα Η συνάρτηση MsgBox της Visual Basic χρησιμεύει στην εμφάνιση απλών μηνυμάτων. Όπως υποδηλώνει και το όνομά της, η συνάρτηση αυτή εμφανίζει ένα πλαίσιο μηνύματος (message box). Όμως, η συνάρτηση MsgBox μπορεί να κάνει πολύ περισσότερα πράγματα. Μπορεί επίσης να κάνει ερωτήματα. Πολλές φορές, όταν μια μακροεντολή κάνει ένα ερώτημα, το μόνο που χρειάζεται είναι απλώς μια απάντηση Ναι ή Όχι. Η συνάρτηση MsgBox είναι ιδανική γι' αυτού του είδους τις ερωτήσεις. Ας υποθέσουμε ότι έχετε δύο μακροεντολές. Η μία είναι μια μεγάλη και αργή μακροεντολή που ονομάζεται PrintMonth (Εκτύπωση μήνα) και η άλλη είναι μια μικρή και γρήγορη μακροεντολή που ονομάζεται ProcessMonth (Επεξεργασία μήνα). Θα διαπιστώσετε ότι συχνά εκτελείτε κατά λάθος την αργή μακροεντολή ενώ θέλετε να εκτελέσετε τη γρήγορη. Μια λύση θα ήταν να προσθέσετε ένα πλαίσιο μηνύματος στην αρχή της αργής μακροεντολής, το οποίο θα σας ζητάει να επιβεβαιώσετε ότι πρόκειται να εκτελέσετε την αργή μακροεντολή. Μαύρο 156 Χρώμα 156

Κεφάλαιο 7: Έλεγχος της Visual Basic 147 Το βιβλίο εργασίας Chapter07 περιέχει μια μακροεντολή που ονομάζεται CheckRun. Θα βελτιώσετε αυτή τη μακροεντολή ώστε να δείτε πώς πρέπει να χρησιμοποιείτε μια συνάρτηση MsgBox για να κάνετε μια ερώτηση. Πριν ξεκινήσετε, η μακροεντολή έχει την παρακάτω μορφή: Sub CheckRun() MsgBox "This takes a long time. Continue?" MsgBox "Continue with slow macro..." 1 Πατήστε στη μακροεντολή CheckRun και μετά πατήστε F5 για να την εκτελέσετε. Πατήστε δύο φορές στο ΟΚ για να κλείσετε και τα δύο πλαίσια μηνύματος. Το πρώτο πλαίσιο μηνύματος εμφανίζεται προκειμένου να κάνει μια ερώτηση, αλλά διαθέτει μόνον ένα κουμπί. Για να κάνετε μια ερώτηση πρέπει να προσθέσετε περισσότερα κουμπιά. Η αρχική μακροεντολή εμφανίζει δύο πλαίσια μηνυμάτων. 2 Μετακινήστε το δρομέα στο τέλος της πρώτης εντολής MsgBox. Αμέσως μετά το ερωτηματικό πληκτρολογήστε ένα κόμμα. Μόλις πληκτρολογήσετε το κόμμα, η Visual Basic θα εμφανίσει το πλαίσιο Quick Info (Σύντομες πληροφορίες) για τη συνάρτηση MsgBox. Το πρώτο όρισμα ονομάζεται Prompt. Σε αυτό πρέπει να καταχωριστεί το μήνυμα που θέλετε να εμφανίσετε. Το δεύτερο όρισμα ο- νομάζεται Buttons και αποτελεί μια αριθμημένη λίστα τιμών. Η προεπιλεγμένη τιμή για το όρισμα Buttons είναι vbokonly. Γι αυτό λοιπόν είδατε μόνον ένα κουμπί ΟΚ όταν εκτελέσατε τη μακροεντολή προηγουμένως. Μαζί με το πλαίσιο Quick Info, η Visual Basic θα εμφανίσει επίσης την Αυτόματη Λίστα (Auto List) με όλες τις πιθανές τιμές για το όρισμα Buttons. Εσείς θέλετε τα κουμπιά να κάνουν ερωτήσεις οι οποίες απαντώνται με Ναι ή με Όχι. 3 Κυλήστε σχεδόν μέχρι το κάτω μέρος του καταλόγου, επιλέξτε VbYesNo, και έπειτα πατήστε το πλήκτρο TAB. 4 Πατήστε F5 για να εκτελέσετε τη μακροεντολή. Το πρώτο πλαίσιο μηνύματος τώρα έχει δύο κουμπιά. Το όρισμα Buttons σάς επιτρέπει να προσδιορίσετε τα κουμπιά που θέλετε να εμφανίσετε. Το πλαίσιο μηνύματος κάνει μια ερώτηση, αλλά αγνοεί πλήρως την απάντησή σας. Πρέπει να πάρετε την απάντηση από τη συνάρτηση MsgBox και στη συνέχεια να τη χρησιμοποιήσετε για να ελέγξετε τον τρόπο με τον οποίο εκτελείται η μακροεντολή. Μαύρο 157 Χρώμα 157

148 Microsoft Excel 2002 Visual Basic For Applications Βήμα Βήμα 5 Πατήστε στο Yes για να κλείσετε το πρώτο πλαίσιο μηνύματος και έπειτα στο ΟΚ για να κλείσετε το δεύτερο. Στη συνέχεια πληκτρολογήστε την εντολή Dim mycheck As VbMsg BoxResult στην αρχή της μακροεντολής. Όταν γνωρίζετε ότι μια μεταβλητή θα περιέχει τιμή μόνο από μια αριθμημένη λίστα, μπορείτε να χρησιμοποιήσετε το όνομα της λίστας για να δηλώσετε τη μεταβλητή. Όταν αργότερα θα γράψετε μια εντολή για να ελέγχετε την τιμή της μεταβλητής, η Visual Basic θα εμφανίσει για λογαριασμό σας τη λίστα με τις δυνατές τιμές. 6 Στην αρχή της πρώτης εντολής MsgBox, πληκτρολογήστε mycheck =, και έπειτα τοποθετήστε σε παρενθέσεις τη λίστα ορισμάτων της συνάρτησης MsgBox. H αναθεωρημένη ε- ντολή πρέπει να έχει την παρακάτω μορφή. Σημαντικό mycheck = MsgBox("This takes a long time. Continue?", vbyesno) Όταν χρησιμοποιείτε την επιστρεφόμενη τιμή μιας συνάρτησης, όπως της MsgBox, πρέπει να τοποθετείτε σε παρενθέσεις τη λίστα ορισμάτων της συνάρτησης MsgBox. Αν δε χρησιμοποιείτε την επιστρεφόμενη τιμή, δεν πρέπει να χρησιμοποήσετε παρενθέσεις. 7 Προσθέστε τις παρακάτω τρεις εντολές πριν από τη δεύτερη εντολή MsgBox: If mycheck = vbno Then Exit Sub End If Όταν δημιουργείτε μια παράσταση συνθήκης χρησιμοποιώντας το αποτέλεσμα της συνάρτησης MsgBox, δεν πρέπει να ελέγχετε αν είναι True (Αληθής) ή False (Ψευδής). Η MsgBox διαθέτει πολλά είδη κουμπιών που μπορεί να εμφανίσει, συνεπώς διαθέτει πολλά είδη απαντήσεων. Αν χρησιμοποιήσετε το vbyesno ως όρισμα Buttons, η MsgBox θα επιστρέφει πάντα vbyes ή vbno. Η εντολή Exit Sub κάνει τη Visual Basic να σταματήσει αμέσως την εκτέλεση της τρέχουσας μακροεντολής. Για να μην είναι οι μακροεντολές σας δυσνόητες, πρέπει να χρησιμοποιείτε την Exit Sub όσο λιγότερο γίνεται. Μια σωστή χρήση της Exit Sub είναι για να ακυρώνει τη μακροεντολή στην αρχή της, όπως σε αυτή την περίπτωση. 8 Δοκιμάστε τη μακροεντολή. Εκτελέστε την και πατήστε στο Yes. Έπειτα εκτελέστε την ξανά και πατήστε στο Νο. Βεβαιωθείτε ότι η υπόλοιπη μακροεντολή εκτελείται μόνον αν πατήσετε στο Yes. Ένα πλαίσιο μηνύματος είναι ένα ισχυρό εργαλείο για να κάνετε απλές ερωτήσεις. Φροντίστε να συγκρίνετε πάντα την απάντηση με βάση τη σωστή σταθερά και όχι ως προς True ή False. Η δήλωση μιας μεταβλητής με το όνομα της αριθμημένης λίστας διευκολύνει στην επιλογή της σωστής σταθεράς. Η συνάρτηση MsgBox αποτελεί επίσης ένα καλό παράδειγμα για το πότε πρέπει και πότε δεν πρέπει να χρησιμοποιείτε παρενθέσεις στις λίστες των ορισμάτων: χρησιμοποιήστε τις παρενθέσεις αν χρησιμοποιείτε την επιστρεφόμενη τιμή της συνάρτησης. Σε αντίθετη περίπτωση μην τις χρησιμοποιείτε. Δημιουργία βρόχων Στο κλασικό του έργο Ο πλούτος των εθνών, ο οικονομολόγος Άνταμ Σμιθ ρωτούσε πόσο θα στοίχιζε η κατασκευή μίας πινέζας σε σχέση με την κατασκευή 10.000 πινεζών. Το κόστος κατασκευής μίας πινέζας είναι σχεδόν το ίδιο με το κόστος κατασκευής 10.000 πινεζών. Με παρόμοιο τρόπο, η γραφή μιας μακροεντολής που εκτελείται μία φορά προϋποθέτει σχεδόν την ίδια δουλειά με τη γραφή μιας μακροεντολής που εκτελείται χιλιάδες φορές σε ένα βρόχο. Μαύρο 158 Χρώμα 158

Κεφάλαιο 7: Έλεγχος της Visual Basic 149 Διατρέξτε μια συλλογή με ένα βρόχο For Each To Excel σάς δίνει τη δυνατότητα να προστατεύετε ένα φύλλο εργασίας ώστε κανείς να μην μπορεί να αλλάξει κάτι στα κελιά τα οποία δεν είναι ξεκλείδωτα. Πρέπει όμως να προστατεύσετε κάθε φύλλο εργασίας ξεχωριστά. Ας υποθέσουμε ότι έχετε ένα βιβλίο εργασίας το οποίο περιέχει προϋπολογισμούς δέκα διαφορετικών τμημάτων και ότι θέλετε να προστατεύσετε όλα τα φύλλα εργασίας. Το βιβλίο εργασίας Chapter07 περιλαμβάνει μια μακροεντολή που ονομάζεται ProtectSheets και η οποία έχει την παρακάτω μορφή: Sub ProtectSheets() Dim mysheet As Worksheet Set mysheet = Worksheets(1) mysheet.select mysheet.protect "Password", True, True, True Αυτή η μακροεντολή αναθέτει μια αναφορά προς το πρώτο φύλλο εργασίας στη μεταβλητή mysheet, επιλέγει το φύλλο αυτό, και έπειτα το προστατεύει. (Η επιλογή του φύλλου στην ουσία δεν είναι απαραίτητη, αλλά με αυτόν τον τρόπο μπορείτε να δείτε πιο εύκολα τι α- κριβώς κάνει η μακροεντολή.) Τώρα δείτε πώς μπορείτε να μετατρέψετε αυτή τη μακροεντολή για να προστατεύσετε όλα τα φύλλα εργασίας που περιέχονται στο βιβλίο εργασίας. 1 Πατήστε στη μακροεντολή ProtectSheets και μετά πατήστε επανειλημμένα F8 για να εξετάσετε τη μακροεντολή βήμα προς βήμα. Βεβαιωθείτε ότι καταλαβαίνετε όλα όσα κάνει η αρχική μακροεντολή. 2 Στην τρίτη γραμμή αντικαταστήστε το Set με For Each, αντικαταστήστε το σύμβολο ίσον με In και αφαιρέστε τις παρενθέσεις και τον αριθμό που βρίσκεται ανάμεσά τους. 3 Τοποθετήστε σε εσοχή τις επόμενες δύο εντολές, αλλάξτε γραμμή στο τέλος της δεύτερης εντολής, και έπειτα πληκτρολογήστε την εντολή Next mysheet. Η αναθεωρημένη μακροεντολή θα πρέπει να έχει την εξής μορφή: Sub ProtectSheets() Dim mysheet As Worksheet For Each mysheet In Worksheets mysheet.select mysheet.protect "Password", True, True, True Next mysheet Το For Each λειτουργεί όπως και το Set. Αναθέτει μια αναφορά αντικειμένου σε μια μεταβλητή. Αντί όμως να αναθέτει ένα μεμονωμένο αντικείμενο στη μεταβλητή, αναθέτει κάθε αντικείμενο μιας συλλογής στη μεταβλητή. Στη συνέχεια, για κάθε αντικείμενο For Each της συλλογής η Visual Basic εκτελεί όλες τις εντολές μέχρι την εντολή Next. Οι εντολές που αρχίζουν με For Each και τελειώνουν με Next ονομάζονται δομές For Each ή βρόχοι For Each. (Πρακτικά, δεν είναι απαραίτητο να βάλετε το όνομα της μεταβλητής μετά το Next. Αν το κάνετε, η Visual Basic απαιτεί το όνομα αυτό να αντιστοιχεί στο όνομα μεταβλητής που υ- πάρχει μετά το For Each. Αν χρησιμοποιείτε πάντα μια μεταβλητή μετά το Next, μπορείτε ευκολότερα να αντιστοιχίσετε το σωστό Next με το σωστό For.) 4 Πατήστε επανειλημμένα F8 για να διατρέξετε τη μακροεντολή βήμα βήμα, παρατηρώντας πώς λειτουργεί σε κάθε φύλλο εργασίας ξεχωριστά. 5 Μεταφερθείτε στο Excel και δοκιμάστε να πληκτρολογήσετε μια τιμή σε κάποιο κελί ο- ποιουδήποτε φύλλου εργασίας. (Στη συνέχεια κλείστε το πλαίσιο του μηνύματος σφάλματος που θα εμφανιστεί.) Μαύρο 159 Χρώμα 159

150 Microsoft Excel 2002 Visual Basic For Applications Βήμα Βήμα 6 Δημιουργήστε μια νέα μακροεντολή με το όνομα UnprotectSheets η οποία καταργεί την προστασία όλων των φύλλων. (Προσπαθήστε να γράψετε τη μακροεντολή χωρίς να κοιτάξετε τον ολοκληρωμένο κώδικα που ακολουθεί. Υπόδειξη: Θα χρειαστεί να χρησιμοποιήσετε τη μέθοδο Unprotect του αντικειμένου του φύλλου εργασίας μαζί με ένα μόνο όρισμα που σας δίνει τον κωδικό πρόσβασης.) Η μακροεντολή σας θα πρέπει να έχει την παρακάτω μορφή: Sub UnprotectSheets() Dim mysheet As Worksheet For Each mysheet In Worksheets mysheet.select Αυτή η εντολή είναι προαιρετική. mysheet.unprotect "Password" Next mysheet 7 Αποθηκεύστε το βιβλίο εργασίας, πατήστε F5 για να δοκιμάσετε τη μακροεντολή UnprotectSheets, και προσπαθήστε να αλλάξετε κάποια τιμή του φύλλου εργασίας. Η διαδρομή μέσα από μια συλλογή είναι τόσο εύκολη όσο και η ανάθεση μίας μόνο τιμής σε ένα αντικείμενο. Απλώς αντικαταστήστε το Set με For Each, προσδιορίστε τη συλλογή, και προσθέστε μια εντολή Next. Συμβουλή Ο βρόχος For Each είναι χρήσιμος για την εξέταση συλλογών στο παράθυρο Immediate. Ωστόσο, ό,τι πληκτρολογείτε στο παράθυρο Immediate πρέπει να είναι σε μία μόνο γραμμή. Μπορείτε να τοποθετήσετε πολλές εντολές σε μία μόνο γραμμή, χωρίζοντάς τες με άνω και κάτω τελεία. Για παράδειγμα, δείτε τι θα πληκτρολογούσατε στο παράθυρο Immediate για να εμφανίσετε τα ονόματα όλων των φύλλων εργασίας του ενεργού βιβλίου εργασίας: For Each x In Worksheets:?x.Name: Next x. (Στο παράθυρο Immediate μπορείτε να χρησιμοποιείτε μικρά και μη περιγραφικά ονόματα μεταβλητών.) Μετρητής σε βρόχο For Μερικές φορές, θέλετε να κάνετε κάποιες ενέργειες επανειλημμένα αλλά δεν μπορείτε να χρησιμοποιήσετε το βρόχο For Each. Για παράδειγμα, ένας βρόχος For Each μπορεί να επεξεργαστεί μία μόνο συλλογή. Αν θέλετε να συγκρίνετε δύο παράλληλες συλλογές όπως δύο περιοχές δεν μπορείτε να χρησιμοποιήσετε βρόχο For Each. Σε αυτή την περίπτωση, η Visual Basic διαθέτει έναν άλλο, πιο γενικευμένο τρόπο εξέτασης: το βρόχο For. Το φύλλο εργασίας Compare που περιέχεται στο βιβλίο εργασίας Chapter07 περιλαμβάνει δύο επώνυμες περιοχές. Η αριστερή ονομάζεται Old (Παλιά) και η δεξιά New (Νέα). Φανταστείτε ότι οι περιοχές αυτές αποτελούν την αρχική και την αναθεωρημένη πρόβλεψη. Τα κελιά της περιοχής Old περιέχουν τιμές. Τα κελιά της περιοχής New περιέχουν έναν τύπο που υπολογίζει έναν τυχαίο αριθμό κάθε φορά που πατάτε F9 για να επανυπολογιστεί το βιβλίο εργασίας. (Ο τύπος στα κελιά αυτά είναι =ROU D(RA D()*50+100,0) και λέει στο Excel να υπολογίσει έναν τυχαίο αριθμό από το 0 έως το 1, να τον πολλαπλασιάσει επί 50, να προσθέσει 100, και να στρογγυλοποιήσει στον πλησιέστερο ακέραιο αριθμό. Καθώς οι αριθμοί παράγονται τυχαία, αυτοί που θα δείτε θα διαφέρουν από αυτούς που υπάρχουν στην εικόνα.) Μαύρο 160 Χρώμα 160

Κεφάλαιο 7: Έλεγχος της Visual Basic 151 Η λειτουργική μονάδα Chapter07 του βοηθήματος Visual Basic Editor περιέχει μια μακροεντολή που ονομάζεται CompareCells και έχει την παρακάτω μορφή: Sub CompareCells() Dim i As Integer Calculate i = Range("New").Cells.Count If Range("New").Cells(i) > Range("Old").Cells(i) Then Range("New").Cells(i).Interior.Color = vbyellow Else Range("New").Cells(i).Interior.Color = vbcyan End If Η μακροεντολή εκτελεί πρώτα τη μέθοδο Calculate, η οποία ισοδυναμεί με πάτημα του πλήκτρου λειτουργιών F9, προκειμένου να υπολογίσει νέες τιμές για όλα τα κελιά της περιοχής New. Στη συνέχεια η μακροεντολή συγκρίνει μόνο το τελευταίο κελί της περιοχής New με το τελευταίο κελί της περιοχής Old. Αν η τιμή New είναι μεγαλύτερη από την τιμή Old, η νέα τιμή γίνεται κίτρινη. Σε αντίθετη περίπτωση γίνεται μπλε. Η μακροεντολή αναθέτει το πλήθος (Count) των κελιών της περιοχής στη μεταβλητή i. Χρησιμοποιεί αυτόν τον αριθμό αρκετές φορές και το i απαιτεί λιγότερη πληκτρολόγηση σε σχέση με το Range(" ew").cells.count. Συμβουλή Οι αριθμοί New είναι τυχαίοι ενδεικτικοί αριθμοί Αν δεν είστε εξοικειωμένοι με τις δομές If, δείτε ξανά το πρώτο μέρος του κεφαλαίου αυτού. Δείτε τώρα πώς μπορείτε να μετατρέψετε αυτή τη μακροεντολή έτσι ώστε να συγκρίνει όλα τα κελιά ταυτόχρονα. 1 Πατήστε στη μακροεντολή CompareCells και πατήστε F8 επανειλημμένα για να τη διατρέξετε βήμα βήμα. Βεβαιωθείτε ότι καταλαβαίνετε όσα κάνει η αρχική μακροεντολή. Η αρχική μακροεντολή συγκρίνει το τελευταίο κελί κάθε περιοχής και δείχνει τη διαφορά με αλλαγή χρώματος. Μαύρο 161 Χρώμα 161