Υπολογιστικά Συστήματα Ενότητα 4: Visual Basic for Applications (VBA) Δομές Επανάληψης και Επιλογής Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Να κατανοήσει ο φοιτητής τα βασικά στοιχεία των δομών επανάληψης και επιλογής στη VBA (Visual Basic for Applications). 4
Περιεχόμενα ενότητας Δομές επανάληψης. Δομές επιλογής. 5
Δομές επανάληψης Οι δομές επανάληψης χρησιμοποιούνται για την αποφυγή συγγραφής γραμμών κώδικα οι οποίες επαναλαμβάνονται περισσότερες από μία φορά. Στην ουσία, επαναλαμβάνεται η εκτέλεση βρόχων ενός μπλοκ/ ομάδας ενεργειών. Βασικές δομές και βρόχοι επανάληψης: 1. Βρόχος For-Next. 2. Βρόχος Do While. 3. Βρόχος Do Until. 4. Δομή With-End With. 5. Δομή For Each-Next. 6
1. Βρόχος For-Next Σύνταξη βρόχου: For μετρητής = αρχή To τέλος [Step βήμα] Εντολές Next μετρητής. Ο βρόχος επαναλαμβάνεται συνεχώς, μέχρις ότου ο μετρητής να φτάσει στην τελική του τιμή. 7
1. Βρόχος For-Next: Παράδειγμα Sub Macro1() Dim sum, i as Integer sum =0 For i=1 to 10 Step 1 sum=sum+i Next i Cells(1,1).value=sum Εδώ, ο βρόχος εκτελείται 10 φορές. 8
Σύνταξη βρόχου: 2. Βρόχος Do While Do While συνθήκη(-ες) Εντολές Loop Ή Do Εντολές Loop While συνθήκη(-ες) 9
2. Βρόχος Do While: Παράδειγμα Sub Macro1() Dim sum as Integer sum =0 Do while sum<5 sum=sum+1 Loop Cells(1,1)=sum End Sub Εδώ, ο βρόχος εκτελείται 5 φορές. Ωστόσο, σε περίπτωση που δεν ικανοποιείται η συνθήκη(-ες), η εκτέλεση του βρόχου δεν πραγματοποιείται. 10
Σύνταξη βρόχου: 3. Βρόχος Do Until Do Until συνθήκη(-ες) Εντολές Loop Ή Do Εντολές Loop Until συνθήκη(-ες) 11
3. Βρόχος Until: Παράδειγμα Sub Macro1() Dim sum as Integer sum =0 Do until sum=4 sum=sum+1 Loop Cells(1,1)=sum End Sub Ο συγκεκριμένος βρόχος είναι παρόμοιος με τον Do While, με τη διαφορά ότι η συνθήκη(-ες) είναι ακριβώς αντίθετη. 12
2. και 3. Βρόχοι Do While/ Until Ωστόσο, θα πρέπει να διευκρινιστεί πως σε περίπτωση που η συνθήκη βρίσκεται μετά το Loop, ακόμα και να μην ικανοποιείται η συνθήκη, ο βρόχος θα εκτελεστεί τουλάχιστον 1 φορά. 13
4. Δομή With-End With (1) Η δομή With-End With επιτρέπει να εκτελούνται πολλές πράξεις σε ένα αντικείμενο, μειώνοντας τις απαιτήσεις συγγραφής κώδικα που επαναλαμβάνεται. Παράδειγμα: Sub ChangeFont() Selection.Font.Bold=true Selection.Font.Size=14 Selection.Font.Italic=true End Sub 14
4. Δομή With-End With (2) Το προηγούμενο, με χρήση της δομής With-End With, γίνεται: Sub ChangeFont() With Selection.Font.Bold=true.Size=14.Italic=true End With End Sub 15
5. Δομή For Each-Next Αυτή η δομή χρησιμοποιείται όταν θέλουμε να εκτελέσουμε μία ή περισσότερες, ίδιες ενέργειες σε μία συλλογή αντικειμένων. Σύνταξη δομής: For Each στοιχείο In συλλογή Εντολές Next στοιχείο 16
5. Δομή For Each-Next: Παράδειγμα Sub Macro1() Dim x as Range For each x In Worksheets( Φύλλο1 ).Range( A1:B3 ) x.value=50 Next x End Sub 17
Δομές επιλογής Οι δομές επιλογής χρησιμοποιούνται για την εκτέλεση μίας ή περισσοτέρων γραμμών, με την προϋπόθεση πως πληρούνται μία ή περισσότερες συνθήκες. Βασικές δομές επιλογής: 1. Δομή If-then. 2. Δομή Select Case. 18
1. Δομή If-then (1) Υπάρχουν 3 βασικές εναλλακτικές για τη σύνταξη αυτής της δομής. Σύνταξη δομής#1: If συνθήκη(-ες) then Εντολή(-ες) End If 19
1. Δομή If-then (2) Παράδειγμα#1: Sub Macro1() If Cells(1,1).Value>5 then Cells(1,1).Value=10 End If End Sub 20
1. Δομή If-then (3) Σύνταξη δομής#2: If συνθήκη(-ες) then Εντολή(-ες)#1 Else Εντολή(-ες)#2 End If 21
1. Δομή If-then (4) Παράδειγμα#2: Sub Macro1() If Cells(1,1).Value>5 then Cells(1,1).Value=10 Else Cells(1,1).Value=100 End If End Sub 22
1. Δομή If-then (5) Σύνταξη δομής#3: If συνθήκη(-ες)#1 then Εντολή(-ες)#1 Elseif συνθήκη(-ες)#2 then Εντολή(-ες)#2 Else Εντολή(-ες)#3 End If 23
1. Δομή If-then (6) Παράδειγμα#3: Sub Macro1() If Cells(1,1).Value>5 then Cells(1,1).Value=10 ElseIf Cells(1,1).Value=5 then Cells(1,1).Value=100 Else Cells(1,1).Value=1 End If End Sub 24
2. Δομή Select Case (1) Αυτή η δομή θεωρείται χρήσιμη για την επιλογή από 3 ή περισσότερες δυνατές επιλογές. Επίσης, αποτελεί εναλλακτική της δομής If-then. Σύνταξη δομής: Select Case έκφραση(-εις ελέγχου) Case λίστα έκφρασης Εντολή(-ες) Case else End Select 25
2. Δομή Select Case (2) Παράδειγμα: Sub Macro1() Dim x as String Dim y as Single Select Case y Case is <1 x= A Case is >0 x= B Case else x= C End Select End Sub 26
Βιβλιογραφία Χαριτούδη Γ. (2006). Visual Basic. ISBN 960-630-767-0. Walkenbach, J. (2011). Εγχειρίδιο Προγραμματισμού Microsoft Excel 2010 με VBA. Εκδόσεις Μ. Γκιούρδας, Αθήνα. 27
Τέλος Ενότητας