Υπολογιστικά Συστήματα Ενότητα 5: Τεχνικές Προγραμματισμού σε Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Να κατανοήσει ο φοιτητής τις βασικές τεχνικές ανάπτυξης κώδικα σε VBA (Visual Basic for Applications). 4
Περιεχόμενα ενότητας Εργασία σε περιοχές του Excel. Συνάρτηση InputΒox. Συνάρτηση MsgΒox. 5
Εργασία σε περιοχές του Excel (1) Αντιγραφή περιοχής: Παράδειγμα: Sub Macro1() Range("A1").Copy Range("A2") End Sub 6
Εργασία σε περιοχές του Excel (2) Αντιγραφή περιοχής (από ένα κελί σε πολλά, άλλου φύλλου εργασίας): Παράδειγμα: Sub macro1() Worksheets("Φύλλο1").Range("a1").Copy Worksheets("Φύλλο2").Range("b1:b4") End Sub 7
Εργασία σε περιοχές του Excel (3) Αντιγραφή περιοχής με χρήση μεταβλητών: Παράδειγμα: Sub Macro1() Dim x, y as Range Set x=worksheets( Φύλλο1 ).Range( a1:a3 ) Set y=worksheets( Φύλλο2 ).Range( a1:a3 ) x.copy y End Sub 8
Εργασία σε περιοχές του Excel (4) Αποκοπή περιοχής: Παράδειγμα: Sub Macro1() Range("A1").Cut Range("A2") End Sub 9
Εργασία σε περιοχές του Excel (5) Αντιγραφή περιοχής μεταβλητού μεγέθους: Sub Macro1() Worksheets("Φύλλο1").Range("Α1").CurrentRegion.Copy Worksheets("Φύλλο2").Range("Α1") End Sub 10
Εργασία σε περιοχές του Excel (6) Αντιγραφή περιοχής: από ενεργό κελί και τέλους ενεργής στήλης μέχρι τα αντίστοιχα κελιά που βρίσκονται στη στήλη του κελιού F1. Sub macro1() Range(ActiveCell, ActiveCell.End(xlDown)).Copy Range("f1", ActiveCell.End(xlDown)) End Sub 11
Συνάρτηση InputΒox (1) Χρησιμοποιείται για την εισαγωγή δεδομένων, από την πλευρά του χρήστη, σε μία μάκρο-εντολή. Η InputΒox είναι μία ειδική συνάρτηση που εμφανίζει στην οθόνη ένα παραθυρικό περιβάλλον, στο οποίο ο χρήστης εισάγει τα σχετικά δεδομένα. 12
Σύνταξη InputBox: Συνάρτηση InputΒox (2) ΌνομαΜεταβλητης = InputBox(Μήνυμα, [Τίτλος], [Προεπιλεγμένη τιμή]) Η μεταβλητή θα πρέπει να είναι ίδιου τύπου με το σχετικό περιεχόμενο που πρόκειται να πληκτρολογήσει ο χρήστης στο παραθυρικό περιβάλλον του InputBox. Το μήνυμα αφορά το κείμενο που θέλουμε να εμφανίζεται στο παραθυρικό περιβάλλον της InputBox και είναι υποχρεωτικό. Ο τίτλος είναι προαιρετικός, και αφορά το κείμενο που θα εμφανιστεί στη γραμμή τίτλου του παραθυρικού περιβάλλοντος. Η προεπιλεγμένη τιμή είναι προαιρετική, και αφορά μία τιμήαπάντηση, η οποία εμφανίζεται στο άνοιγμα του παραθυρικού περιβάλλοντος της InputBox. Ο χρήστης κρίνει εάν θα τη δεχθεί ή θα την αλλάξει. 13
InputBox - Παράδειγμα Sub macro1() Dim x As Integer x = InputBox( Πληκτρολόγησε έναν ακέραιο αριθμό", Άσκηση1") Cells(1, 1) = x End Sub 14
Συνάρτηση MsgΒox (1) Χρησιμοποιείται για την εμφάνιση ενός μηνύματος ή δεδομένων εξόδου σε ένα παραθυρικό περιβάλλον (πλαίσιο μηνύματος). 15
Σύνταξη MsgΒox: Συνάρτηση MsgΒox (2) MsgBox(Μήνυμα),, Τίτλος ή συνδέοντας αυτήν σε μία μεταβλητή (όταν εισάγουμε στην MsgBox κουμπιά) με σκοπό εναλλακτικές ενέργειες από την επιλογή των κουμπιών ΌνομαΜεταβλητής = MsgBox(Μήνυμα, [κουμπιά], [Τίτλος]) Η μεταβλητή (προαιρετική) είναι τύπου Integer. Το μήνυμα αφορά το κείμενο που θέλουμε να εμφανιστεί στο παραθυρικό περιβάλλον της MsgBox και είναι υποχρεωτικό. Τα κουμπιά είναι προαιρετικά. Ο τίτλος είναι προαιρετικός, και αφορά το κείμενο που θα εμφανιστεί στη γραμμή τίτλου του παραθυρικού περιβάλλοντος. 16
ΜsgBox Παράδειγμα (1) Sub macro1() Μsgbox( Καλημέρα ) End Sub 17
ΜsgBox Παράδειγμα (2) Sub macro1() Dim x As Integer x = MsgBox("Συμφωνείς;", vbyesno, Άσκηση1") If x = vbyes Then Cells(1, 1) = Συμφωνώ" ElseIf x = vbno Then Cells(1, 1) = "Δεν συμφωνώ" End If End Sub 18
Βιβλιογραφία Χαριτούδη Γ. (2006). Visual Basic. ISBN 960-630-767-0. Walkenbach, J. (2011). Εγχειρίδιο Προγραμματισμού Microsoft Excel 2010 με VBA. Εκδόσεις Μ. Γκιούρδας, Αθήνα. 19
Τέλος Ενότητας