Υπολογιστικά Συστήματα Ενότητα 6: Ασκήσεις στη Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Να κατανοήσει ο φοιτητής τη VBA (Visual Basic for Applications) μέσα από την επίλυση σχετικών ασκήσεων. Ειδικότερα, αυτή η ενότητα περιλαμβάνει την πρακτική εφαρμογή της θεωρίας που εξετάστηκε στις ενότητες 3, 4 και 5. 4
Περιεχόμενα ενότητας Ασκήσεις διαδικασιών στη VBA. Ασκήσεις συναρτήσεων στη VBA. 5
Άσκηση 1 Να υλοποιηθεί διαδικασία η οποία να αντιμεταθέτει το περιεχόμενο των κελιών Α1 και Α2, του πρώτου φύλλου εργασίας. Sub macro1() Dim x As Variant x = Worksheets("Φύλλο1").Range("a1").Value Worksheets("Φύλλο1").Range("a1").Value=Worksheets("Φύλλο 1").Range("a2").Value Worksheets("Φύλλο1").Range("a2").Value = x End Sub 6
Άσκηση 2 Να υλοποιηθεί διαδικασία η οποία να αθροίζει το περιεχόμενο των κελιών C1,C2 και C3, του πρώτου φύλλου εργασίας, στο κελί C5, του ίδιου φύλλου. Sub askisi1_1() Dim x, y, z As Single x = Worksheets("Φύλλο1").Range("C1").Value y = Worksheets("Φύλλο1").Range("C2").Value z = Worksheets("Φύλλο1").Range("C3").Value Worksheets("Φύλλο 1").Range("c5").Value = x + y + z End Sub 7
Άσκηση 3 Να υλοποιηθεί μία διαδικασία η οποία να εμφανίζει, στο κελί Α5, το μέσο όρο των ακεραίων αριθμητικών τιμών των κελιών Α1 έως Α4. Sub askisi1_3() Dim x, y, z, w As Integer x = Worksheets("Φύλλο1").Range("a1").Value y = Worksheets("Φύλλο1").Range("a2").Value z = Worksheets("Φύλλο1").Range("a3").Value w = Worksheets("Φύλλο1").Range("a4").Value Worksheets("Φύλλο1").Range("a5").Value = (x + y + z + w) / 4 End Sub 8
Άσκηση 4 Να υλοποιηθεί μία διαδικασία η οποία να αντιγράφει το περιεχόμενο του κελιού Β5, του πρώτου φύλλου εργασίας, στο κελί Α5, του δεύτερου φύλλου εργασίας. Sub askisi1_1() Worksheets("Φύλλο2").Range("A5").Value = Worksheets("Φύλλο1").Range("B5").Value End Sub 9
Άσκηση 5 (1) Να υλοποιηθεί διαδικασία η οποία να αντιγράφει το περιεχόμενο των κελίων Α1:Α3 και Β5, του 1 ου φύλλου εργασίας, στα αντίστοιχα κελιά του 2 ου και 3 ου φύλλου εργασίας. 10
Άσκηση 5 (2) Sub macro1() Worksheets("Φύλλο2").Range("a1:a3").Value=Worksheets("Φύλλο 1").Range("a1:a3").Value Worksheets("Φύλλο3").Range("a1:a3").Value=Worksheets("Φύλλο 1").Range("a1:a3").Value Worksheets("Φύλλο2").Range("b5").Value = Worksheets("Φύλλο1").Range("b5").Value Worksheets("Φύλλο3").Range("b5").Value = Worksheets("Φύλλο1").Range("b5").Value End Sub 11
Άσκηση 6 Να υλοποιηθεί διαδικασία στην οποία θα δηλώνονται οι σταθερές x= TEI και y= Γρεβενών, και το περιεχόμενο και των 2 να εμφανίζεται στο κελί Α2, του 2 ου φύλλου εργασίας. Sub macro2() Const x As String = "TEI" Const y As String = "Γρεβενών" Worksheets("Φύλλο1").Range("a2").Value = x & " " & y End Sub 12
Άσκηση 7 Να υλοποιηθεί διαδικασία στην οποία θα δηλωθούν 3 μεταβλητές (x, y και z αντιστοίχως). Η πρώτη θα έχει εμβέλεια μόνο εντός αυτής της διαδικασίας, η δεύτερη θα έχει εμβέλεια σε όλο το έργο (project), ενώ η τρίτη θα έχει εμβέλεια στη συγκεκριμένη λειτουργική μονάδα (module). Public y As Integer Private z As String Sub macro3() Dim x As Integer End Sub 13
Άσκηση 8 Να υλοποιηθεί διαδικασία η οποία να αποθηκεύει στη μεταβλητή k τα κελιά Α1 έως D10, του 3 ου φύλλου εργασίας. Sub macro4() Dim k As Range Set k = Worksheets("Φύλλο3").Range("a1:d10") End Sub 14
Άσκηση 9 (1) Να υλοποιηθεί διαδικασία η οποία να αποθηκεύει στη μεταβλητή a τα κελιά Α3 έως C3, του πρώτου φύλλου εργασίας και τα κελιά B1 έως Β3, του δεύτερου φύλλου εργασίας, στη μεταβλητή b. Στη συνέχεια, το περιεχόμενο των κελιών Α3 έως C3 να χρωματίζεται κίτρινο. Τα κελιά B1 έως Β3 να παίρνουν τιμές ίσες με 100 και να έχουν έντονη γραφή. 15
Άσκηση 9 (2) Sub macro4() Dim a, b As Range Set a = Worksheets("Φύλλο1").Range("a3:c3") Set b = Worksheets("Φύλλο2").Range("b1:b3") a.font.color = vbyellow b.value = 100 b.font.bold = True End Sub 16
Άσκηση 10 Να υλοποιηθεί διαδικασία η οποία στη σταθερά a να αποθηκεύει τη λέξη Καλημέρα. Ο χρήστης να εισάγει ένα όνομα στο κελί D1, του πρώτου φύλλου εργασίας, και η διαδικασία να εμφανίζει το μήνυμα Καλημέρα + το περιεχόμενο του κελιού D1, στο ίδιο φύλλο εργασίας, στο κελί D2. Sub macro3() Const a As String = "Καλημέρα" Dim x As String x = Worksheets("Φύλλο1").Range("d1").Value Worksheets("Φύλλο1").Range("d2").Value = a & " " & x End Sub 17
Άσκηση 11 (1) Να υλοποιηθεί διαδικασία στην οποία ο χρήστης εισάγει στο κελί Α1 το βαθμό που πήρε σε ένα μάθημα. Εάν ο βαθμός είναι από 5 και πάνω, να εμφανίζεται το μήνυμα «πέρασε» στο κελί Α2. Διαφορετικά, να εμφανίζεται το μήνυμα «κόπηκε». Τέλος, να γίνεται έλεγχος επιτρεπτών τιμών (0-10). 18
Άσκηση 11 (2) Sub macro1() Dim x As Single x = Cells(1, 1).Value If x < 0 Or x > 10 Then Cells(2, 1).Value = "λάθος βαθμός" ElseIf x >= 5 Then Cells(2, 1).Value = "πέρασε" Else Cells(2, 1).Value = "κόπηκε" End If End Sub 19
Άσκηση 12 (1) Να υλοποιηθεί διαδικασία στην οποία ο χρήστης εισάγει στα κελιά Α1 και Α2 δύο αριθμούς. Επίσης, εισάγει στο κελί Α3 τον αριθμητικό τελεστή της πρόσθεσης (+) ή τον αντίστοιχο της αφαίρεσης (-). Η διαδικασία να εμφανίζει στο κελί Α4 το άθροισμα των αριθμών των κελιών Α1 και Α2, εάν ο χρήστης έχει εισάγει το «+» στο κελί Α3, και τη διαφορά τους (Α1-Α2), εάν έχει εισάγει το «-» στο κελί Α3. 20
Άσκηση 12 (2) Sub macro2() If Cells(3, 1).Value = "+" Then Cells(4, 1).Value = Cells(1, 1).Value + Cells(2, 1).Value ElseIf Cells(3, 1).Value = "-" Then Cells(4, 1).Value = Cells(1, 1).Value - Cells(2, 1).Value End If End Sub 21
Άσκηση 13 (1) Να υλοποιηθούν διαδικασίες στις οποίες ο φοιτητής θα εισάγει στο κελί Α1 το βαθμό πτυχίου του. Εάν ο βαθμός είναι από 5 μέχρι 6.49, να εμφανίζεται στο κελί Α2 το μήνυμα «Καλώς», εάν είναι από 6.5 έως και 8.49, να εμφανίζεται το μήνυμα «Λίαν καλώς», και εάν είναι από 8.5 έως και 10 το μήνυμα «Άριστα». Η υλοποίηση να γίνει, τόσο με τη δομή επιλογής If όσο και με τη δομή επιλογής Select Case. 22
Άσκηση 13 (2) Δομή If: Sub macro3() Dim x As Single x = Cells(1, 1).Value If x < 5 Or x > 10 Then Cells(2, 1).Value = "lathos vathmos" ElseIf x >= 5 And x <= 6.49 Then Cells(2, 1).Value = "kalws" ElseIf x >= 6.5 And x <= 8.49 Then Cells(2, 1).Value = "lian kalws" 23
Άσκηση 13 (3) Else Cells(2, 1).Value = "arista" End If End Sub 24
Άσκηση 13 (4) Δομή Select Case: Sub macro4() Dim x As Single x = Cells(1, 1).Value Select Case x Case Is < 5 Cells(2, 2).Value = "lathos vathmos" Case Is > 10 Cells(2, 2).Value = "lathos vathmos" 25
Άσκηση 13 (5) Case Is <= 6.49 Cells(2, 2).Value = "kalws" Case Is <= 8.49 Cells(2, 2).Value = "lian kalws" Case Is <= 10 Cells(2, 2).Value = "arista" End Select End Sub 26
Άσκηση 14 (1) Να υλοποιηθεί διαδικασία η οποία να κάνει έντονο (bold) το περιεχόμενο των κελιών Α1:Α4, εάν τα κελιά έχουν αρνητική τιμή. Εάν έχουν θετική τιμή, το περιεχόμενό τους να υπογραμμίζεται (underline), και σε όλες τις άλλες περιπτώσεις να υπογραμμίζονται και να είναι έντονα ταυτόχρονα. 27
Άσκηση 14 (2) Sub macro1() Dim x As Range For Each x In Worksheets("Φύλλο1").Range("a1:a4") If x.value < 0 Then x.font.bold = True ElseIf x.value > 0 Then x.font.underline = True Else 28
Άσκηση 14 (3) x.font.underline = True x.font.bold = True End If Next x End Sub 29
Άσκηση 15 Να υλοποιηθεί διαδικασία η οποία να εμφανίζει το ονοματεπώνυμό σας στα κελιά b2 έως d10. Sub macro2() Dim x As Range For Each x In Worksheets("Φύλλο1").Range("b2:d10") x.value = "Kostas Papadopoulos" Next x End Sub 30
Άσκηση 16 (1) Να υλοποιηθεί διαδικασία η οποία να εμφανίζει τον άσσο (1) στα κελιά του εύρους a1: e20, εάν αυτά δεν έχουν περιεχόμενο (είναι κενά). Διαφορετικά να εμφανίζει το μηδέν (0). 31
Άσκηση 16 (2) Sub macro4() Dim x As Range For Each x In Worksheets("Φύλλο1").Range("a1:e20") If x.value = "" Then x.value = 1 Else x.value = 0 End If Next x End Sub 32
Άσκηση 17 Να υλοποιηθεί διαδικασία η οποία να υπολογίζει το γινόμενο των κελιών b3:b7 στο κελί a1. Sub macro3() Dim gin As Single Dim x As Range gin = 1 For Each x In Worksheets("Φύλλο1").Range("b3:b7") gin = gin * x.value Next x Cells(1, 1).Value = gin End Sub 33
Άσκηση 18 (1) Να υλοποιηθεί διαδικασία η οποία να αθροίζει το περιεχόμενο των κελιών Α1:F5 στο κελί Α7. Επίσης, σε περίπτωση που αυτό το άθροισμα είναι μεγαλύτερο από 150, να εμφανίζεται στο κελί Α8 το μήνυμα «μεγάλος αριθμός», διαφορετικά να εμφανίζεται το μήνυμα «μικρός αριθμός» (κελί Α8). Sub m1() Dim x As Range Dim sum As Single sum = 0 34
Άσκηση 18 (2) For Each x In Worksheets("Φύλλο1").Range("a1:f5") sum = sum + x.value Next x Cells(7, 1).Value = sum If sum > 150 Then Cells(8, 1).Value = "megalos arithmos" Else Cells(8, 1).Value = "mikros arithmos" End If End Sub 35
Άσκηση 19 (1) Να υλοποιηθεί διαδικασία η οποία να: Α) αθροίζει την ακολουθία 5+7+9+..+60 στο κελί Α2. Β) υπολογίζει το γινόμενο 2*5*..*11 στο κελί C3. Γ) αθροίζει την ακολουθία -5-3-1+1+..+20 στο κελί Β1. Η υλοποίηση των παραπάνω ερωτημάτων να γίνει με χρήση της δομής επανάληψης for. 36
Άσκηση 19 (2) Sub m4() Dim i, sum As Integer sum = 0 For i = 5 To 60 Step 2 sum = sum + i Next i Cells(2, 1).Value = sum sum = 1 37
Άσκηση 19 (3) For i = 2 To 11 Step 3 sum = sum * i Next i Cells(3, 3).Value = sum sum = 0 For i = -5 To 20 Step 2 sum = sum + i Next i Cells(1, 2).Value = sum End Sub 38
Άσκηση 20 (1) Να υλοποιηθεί διαδικασία η οποία στα κελιά Α1:C3, με χρήση του for, να τοποθετεί άσσους στην κύρια διαγώνιο και σε όλα τα υπόλοιπα κελιά το μηδέν. Sub m5() Dim i, j As Integer For i = 1 To 3 For j = 1 To 3 If (i = j) Then Cells(i, j).value = 1 39
Άσκηση 20 (2) Else Cells(i, j).value = 0 End If Next j Next i End Sub 40
Άσκηση 21 (1) Να υπολογιστούν, σε μία διαδικασία, τα παρακάτω: S1=3+6+9+ +25 στο κελί Α1, S2=2*4* *8 στο κελί Α2, S3=S2/S1 στο κελί Α3, S4=S3/S2 στο κελί Α4 και Στο κελί Α5 ο αριθμός των επαναλήψεων του S1. 41
Sub m1() Dim i, s1, s2, counter As Integer Dim s3 As Single s1 = 0 counter = 0 For i = 3 To 25 Step 3 s1 = s1 + i counter = counter + 1 Next I Cells(1, 1).Value = s1 Άσκηση 21 (2) 42
Άσκηση 21 (3) s2 = 1 For i = 2 To 8 Step 2 s2 = s2 * i Next i Cells(2, 1).Value = s2 s3 = s2 / s1 Cells(3, 1).Value = s3 Cells(4, 1).Value = s3 / s2 Cells(5, 1).Value = "Ο αριθμός των επαναλήψεων είναι " & counter End Sub 43
Άσκηση 22 (1) Nα υλοποιηθεί διαδικασία η οποία να εμφανίζει τον αριθμό 1 στα κελιά Α1:C10 των φύλλων εργασίας 1 έως 3, σε περίπτωση που αυτά έχουν περιεχόμενο. Διαφορετικά, τα ίδια κελιά, να γεμίζουν με το μηδέν (0). Sub m2() Dim i As Integer Dim x As Range For i = 1 To 3 For Each x In Worksheets("Φύλλο" & i).range("a1:c10") 44
Άσκηση 22 (2) If x.value <> "" Then x.value = 1 Else x.value = 0 End If Next x Next i End Sub 45
Άσκηση 23 (1) Να υλοποιηθεί διαδικασία στην οποία να ζητείται το όνομά σας μέσω inputbox. Σε περίπτωση που δίνεται λάθος όνομα, το inputbox να επαναλαμβάνεται ξανά και ξανά. Επίσης, στο κελί Α1 να εμφανίζεται σε ποια επανάληψη περάστηκε η σωστή τιμή στο inputbox. 46
Άσκηση 23 (2) Sub m3() Dim x As String Dim counter As Integer counter = 0 Do x = InputBox("Δώσε όνομα") counter = counter + 1 Loop Until x = "Κώστας" Or x = "ΚΩΣΤΑΣ" Cells(1, 1).Value = "Έδωσες τη σωστή τιμή με την " & counter & "η φορά" End Sub 47
Άσκηση 24 (1) Να υλοποιηθεί διαδικασία η οποία να υπολογίζει στο κελί Α1 την ακολουθία: 3+8+ +x, όπου x η τιμή που εισάγει ο χρήστης μέσω inputbox. Σημείωση: η τιμή του x θα πρέπει να είναι υποχρεωτικά μεγαλύτερη από 18 και μικρότερη από 35 (έλεγχος του inputbox). 48
Άσκηση 24 (2) Sub m4() Dim i, x, sum As Integer sum = 0 Do x = InputBox("Δώσε τελική τιμή ακολουθίας") Loop Until x > 18 And x < 35 For i = 3 To x Step 5 sum = sum + i Next i Cells(1, 1).Value = sum End Sub 49
Άσκηση 25 (1) Να υλοποιηθεί διαδικασία η οποία, μέσω inputbox, να ζητείται ο κωδικός εισόδου σε ένα σύστημα (σωστός κωδικός 1234). Σε περίπτωση που ο χρήστης κάνει 5 λάθος εισαγωγές, το πρόγραμμα να κλείνει. Διαφορετικά, εάν δηλαδή ο χρήστης εισάγει το σωστό κωδικό, να εμφανίζεται στο κελί Α1 το μήνυμα «Σωστή εισαγωγή κωδικού». Sub b1() Dim x, counter As Integer counter = 0 50
Άσκηση 25 (2) Do x = InputBox("Δώσε κωδικό εισόδου") counter = counter + 1 If counter = 5 Then End End If Loop Until x = 1234 Cells(1, 1).Value = "Σωστή εισαγωγή κωδικού" End Sub 51
Άσκηση 26 (1) Να υλοποιηθεί διαδικασία η οποία να υπολογίζει και να εμφανίζει στο κελί Α1 την ακολουθία: x+(x+2)+(x+4)+ +y, όπου x και y ακέραιες αριθμητικές τιμές που εισάγει ο χρήστης μέσω inputbox. Προϋπόθεση: y>x+2. Sub b2() Dim x, y, i, sum As Integer Do x = InputBox("Δώσε αρχική τιμή ακολουθίας") y = InputBox("Δώσε τελική τιμή ακολουθίας") Loop Until y > x + 2 52
Άσκηση 26 (2) sum = 0 For i = x To y Step 2 sum = sum + i Next i Cells(1, 1).Value = sum End Sub 53
Άσκηση 27 (1) Να υλοποιηθεί διαδικασία η οποία μέσω inputbox να ζητάει την ηλικία σας (να γίνεται έλεγχος με αποδεκτές τιμές 0 έως 130). Στη συνέχεια, θα εμφανίζεται ένα msgbox με το μήνυμα «Είστε γυναίκα;» και κουμπία Nαι & Όχι. Ανάλογα με τις ενέργειες του χρήστη (π.χ. 19 και όχι), να εμφανίζεται σε νέο msgbox ανάλογο μήνυμα (π.χ. Είσαι άντρας 19 χρονών). Sub b4() Dim x, y As Integer Do x = InputBox("Δώσε ηλικία") 54
Άσκηση 27 (2) Loop Until x >= 0 And x <= 130 y = MsgBox("Είστε γυναίκα;", vbyesno) If y = vbno Then MsgBox ("Είσαι άντρας " & x & " χρονών") Else MsgBox ("Είσαι γυναίκα " & x & " χρονών") End If End Sub 55
Άσκηση 28 (1) Να υλοποιηθεί διαδικασία η οποία μέσω 2 inputboxes να ζητάει το βαθμό του μαθήματος στη θεωρία και στο εργαστήριο αντίστοιχα (να γίνεται έλεγχος με αποδεκτές τιμές 0 έως 10). Εάν ο βαθμός και των 2 (θεωρίας και εργαστηρίου) είναι >=5, τότε να εμφανίζει το μέσο όρο τους σε ένα msgbox. Διαφορετικά, στο msgbox, να εμφανίζει ότι χρωστάς θεωρία ή/και εργαστήριο του μαθήματος (δηλαδή, συνολικά υπάρχουν 4 δυνατές επιλογές). 56
Άσκηση 28 (2) Sub b5() Dim x, y As Single Do x = InputBox("Δώσε βαθμό θεωρίας") Loop Until x >= 0 And x <= 10 Do y = InputBox("Δώσε βαθμό εργαστηρίου") Loop Until y >= 0 And y <= 10 If x >= 5 And y >= 5 Then MsgBox ("Μέσο όρος: " & (x + y) / 2) 57
Άσκηση 28 (3) ElseIf x < 5 And y < 5 Then MsgBox ("Κόπηκες και στα 2") ElseIf x >= 5 And y < 5 Then MsgBox ("Πέρασες μόνο τη θεωρία") Else MsgBox ("Πέρασες μόνο τo εργαστήριο") End If End Sub 58
Άσκηση 29 (1) Να υλοποιηθεί διαδικασία η οποία να εμφανίζει 3 msgbox με κουμπιά Yes & No. Στο 1 ο, να υπάρχει η ερώτηση «Είσαι φοιτητής;», στο 2 ο «Είσαι άντρας;» και το 3 ο «Είσαι από τα Γρεβενά;». Ανάλογα με τις 3 επιλογές, να εμφανίζεται σχετικό μήνυμα στο κελί Α1. Sub m1() Dim x As Integer Dim n As String x = MsgBox("Είσαι φοιτητής;", vbyesno) If x = vbyes Then n = "Φοιτητής " 59
Άσκηση 29 (2) Else: n = "Δεν είναι φοιτητής" End If x = MsgBox("Είσαι άντρας;", vbyesno) If x = vbyes Then n = n & " άντρας " Else: n = n & " γυναίκα " End If x = MsgBox("Είσαι από τα Γρεβενά;", vbyesno) If x = vbyes Then n = n & "από τα Γρεβενά" 60
Άσκηση 29 (3) Else: n = n & "εκτός Γρεβενών" End If Cells(1, 1).Value = n End Sub 61
Άσκηση 30 (1) Να υλοποιηθεί διαδικασία, η οποία μέσω inputbox, να δέχεται το ύψος σας σε εκατοστά. Στη συνέχεια, εμφανίζεται msgbox στο οποίο αναφέρεται η φράση «Έχετε ύψος x» (βάσει της τιμής που περάσετε στο inputbox). Έπειτα, εμφανίζεται νέο inputbox στο οποίο εισάγετε το βάρος σας. Στη συνέχεια, εμφανίζεται msgbox στο οποίο αναφέρεται η φράση «Έχετε βάρος x κιλά» (βάσει της τιμής που περάσετε στο inputbox). Τέλος, εμφανίζεται ένα νέο msgbox, με τη φράση «Να κλείσει το πρόγραμμα;», με κουμπιά Ναι & Όχι. Σε περίπτωση που πατηθεί το κουμπί Ναι να κλείνει το πρόγραμμα, διαφορετικά (δηλαδή πατηθεί το Όχι), να εμφανίζονται όλα τα παραπάνω από την αρχή (ξανά και ξανά). 62
Άσκηση 30 (2) Sub m1() Dim x, z As Integer Dim y As Single Do x = InputBox("Δώσε το ύψος σου σε εκατοστά") MsgBox ("Έχετε ύψος " & x) y = InputBox("Δώσε το βάρος σου") MsgBox ("Το βάρος σου είναι " & y & " κιλά") 63
Άσκηση 30 (3) z = MsgBox("Να κλείσει το πρόγραμμα;", vbyesno) If z = vbyes Then End End If Loop Until z <> vbno End Sub 64
Άσκηση 31 (1) Να δημιουργηθεί συνάρτηση με όνομα lc η οποία να επιστρέφει τον μικρότερο αριθμό μεταξύ των 3 ορισμάτων που δέχεται ως παραμέτρους. 65
Άσκηση 31 (2) Function lc(x, y, z As Single) As Single If x <= y And x <= z Then lc = x ElseIf y <= x And y <= z Then lc = y ElseIf z <= x And z <= y Then lc = z End If End Function 66
Άσκηση 32 Να υλοποιηθεί συνάρτηση η οποία να υπολογίζει το εμβαδόν ενός οποιουδήποτε τραπεζίου. Function emtrapeziou(v1, v2, y As Single) As Single emtrapeziou = (v1 + v2) * y / 2 End Function 67
Άσκηση 33 Να υλοποιηθεί συνάρτηση η οποία να υπολογίζει τον όγκο της σφαίρας. Function osfairas(r As Single) As Single osfairas = (4 / 3) * Pi() * Power(r, 3) End Function 68
Άσκηση 34 Να υλοποιηθεί συνάρτηση με όνομα le η οποία να δέχεται 2 υποχρεωτικά κι ένα προαιρετικό όρισμα, ως παραμέτρους (αριθμοί). Η συνάρτηση να υπολογίζει και να επιστρέφει το μέσο όρο των ορισμάτων της. Function le(x, y As Single, Optional z As Single) As Single If z <> "" Then le = (x + y + z) / 3 Else le = (x + y) / 2 End If End Function 69
Βιβλιογραφία Χαριτούδη Γ. (2006). Visual Basic. ISBN 960-630-767-0. Walkenbach, J. (2011). Εγχειρίδιο Προγραμματισμού Microsoft Excel 2010 με VBA. Εκδόσεις Μ. Γκιούρδας, Αθήνα. 70
Τέλος Ενότητας