Κατανόηση τύπων δεδομένων Excel VBA (μεταβλητές και σταθερές)

Στο Excel VBA, συχνά θα πρέπει να χρησιμοποιείτε μεταβλητές και σταθερές.

Όταν εργάζεστε με VBA, μια μεταβλητή είναι μια θέση στη μνήμη του υπολογιστή σας όπου μπορείτε να αποθηκεύσετε δεδομένα. Ο τύπος δεδομένων που μπορείτε να αποθηκεύσετε σε μια μεταβλητή εξαρτάται από τον τύπο δεδομένων της μεταβλητής.

Για παράδειγμα, εάν θέλετε να αποθηκεύσετε ακέραιους αριθμούς σε μια μεταβλητή, ο τύπος δεδομένων σας θα είναι "Ακέραιος" και εάν θέλετε να αποθηκεύσετε κείμενο, τότε ο τύπος δεδομένων σας θα είναι "Συμβολοσειρά".

Περισσότερα για τους τύπους δεδομένων αργότερα σε αυτό το σεμινάριο.

Ενώ η τιμή μιας μεταβλητής αλλάζει όταν ο κώδικας βρίσκεται σε εξέλιξη, μια σταθερά διατηρεί μια τιμή που δεν αλλάζει ποτέ. Ως καλή πρακτική κωδικοποίησης, θα πρέπει να ορίσετε τον τύπο δεδομένων και των δύο - μεταβλητών και σταθερών.

Γιατί να χρησιμοποιήσετε μεταβλητές στο VBA;

Όταν κωδικοποιείτε σε VBA, θα χρειάζεστε μεταβλητές που μπορείτε να χρησιμοποιήσετε για να διατηρήσετε μια τιμή.

Το όφελος από τη χρήση μιας μεταβλητής είναι ότι μπορείτε να αλλάξετε την τιμή της μεταβλητής μέσα στον κώδικα και να συνεχίσετε να τη χρησιμοποιείτε στον κώδικα.

Για παράδειγμα, παρακάτω είναι ένας κωδικός που προσθέτει τους πρώτους 10 θετικούς αριθμούς και στη συνέχεια εμφανίζει το αποτέλεσμα σε ένα πλαίσιο μηνυμάτων:

Sub AddFirstTenNumbers () Dim Var As Integer Dim i As Integer Dim k as Integer Για i = 1 έως 10 k = k + i Next i MsgBox k End Sub

Υπάρχουν τρεις μεταβλητές στον παραπάνω κώδικα - Var, Εγώ, και κ.

Ο παραπάνω κώδικας χρησιμοποιεί ένα βρόχο For Next όπου και οι τρεις αυτές μεταβλητές αλλάζουν καθώς ολοκληρώνονται οι βρόχοι.

Η χρησιμότητα μιας μεταβλητής έγκειται στο γεγονός ότι μπορεί να αλλάξει ενώ ο κωδικός σας βρίσκεται σε εξέλιξη.

Ακολουθούν ορισμένοι κανόνες που πρέπει να έχετε κατά νου όταν ονομάζετε τις μεταβλητές στο VBA:

  1. Μπορείτε να χρησιμοποιήσετε αλφάβητα, αριθμούς και σημεία στίξης, αλλά ο πρώτος αριθμός πρέπει να είναι αλφάβητο.
  2. Δεν μπορείτε να χρησιμοποιήσετε διάστημα ή τελεία στο όνομα της μεταβλητής. Ωστόσο, μπορείτε να χρησιμοποιήσετε έναν χαρακτήρα υπογράμμισης για να κάνετε τα ονόματα μεταβλητών πιο ευανάγνωστα (όπως το Interest_Rate)
  3. Δεν μπορείτε να χρησιμοποιήσετε ειδικούς χαρακτήρες (#, $, %, &, ή!) Σε ονόματα μεταβλητών
  4. Το VBA δεν κάνει διάκριση μεταξύ της κεφαλαίας στο όνομα της μεταβλητής. Έτσι, το "InterestRate" και το "interestrate" είναι τα ίδια για το VBA. Μπορείτε να χρησιμοποιήσετε μικτή περίπτωση για να κάνετε τις μεταβλητές πιο ευανάγνωστες.
  5. Το VBA έχει ορισμένα ονόματα που μπορείτε να χρησιμοποιήσετε για ένα όνομα μεταβλητής. Για παράδειγμα, δεν μπορείτε να χρησιμοποιήσετε τη λέξη «Επόμενο» ως όνομα μεταβλητής, καθώς είναι δεσμευμένο όνομα για το βρόχο For Next.
  6. Το όνομα της μεταβλητής σας μπορεί να έχει μήκος έως 254 χαρακτήρες.

Τύπος δεδομένων μεταβλητών

Για την καλύτερη δυνατή χρήση των μεταβλητών, είναι καλή πρακτική να καθορίσετε τον τύπο δεδομένων της μεταβλητής.

Ο τύπος δεδομένων που αντιστοιχίζετε σε μια μεταβλητή θα εξαρτηθεί από τον τύπο δεδομένων που θέλετε να διατηρήσει αυτή η μεταβλητή.

Παρακάτω είναι ένας πίνακας που δείχνει όλους τους διαθέσιμους τύπους δεδομένων που μπορείτε να χρησιμοποιήσετε στο Excel VBA:

Τύπος δεδομένων Bytes Χρησιμοποιούνται Εύρος Αξιών
Ψηφιόλεξη 1 byte 0 έως 255
Boolean 2 byte Σωστό ή λάθος
Ακέραιος αριθμός 2 byte -32.768 έως 32.767
Μακρύς (ακέραιος ακέραιος) 4 byte -2,147,483,648 έως 2,147,483,647
Μονόκλινο 4 byte -3,402823E38 έως -1,401298E -45 για αρνητικές τιμές. 1.401298E-45 έως 3.402823E38 για θετικές τιμές
Διπλό 8 byte -1,79769313486231E308 έως-4,94065645841247E-324 για αρνητικές τιμές. 4.94065645841247E-324 έως 1.79769313486232E308 για θετικές τιμές
Νόμισμα 8 byte -922,337,203,685,477,5808 έως 922,337,203,685,477,5807
Δεκαδικός 14 byte +/- 79,228,162,514,264,337,593,543,950,335 χωρίς δεκαδικό σημείο · +/- 7.9228162514264337593543950335 με 28 θέσεις στα δεξιά της υποδιαστολής
Ημερομηνία 8 byte 1 Ιανουαρίου 100 έως 31 Δεκεμβρίου 9999
Αντικείμενο 4 byte Οποιαδήποτε αναφορά αντικειμένου
Χορδή (μεταβλητού μήκους) 10 byte + μήκος συμβολοσειράς 0 έως περίπου 2 δις
Χορδή (σταθερού μήκους) Μήκος χορδής 1 έως περίπου 65.400
Παραλλαγή (με αριθμούς) 16 byte Οποιαδήποτε αριθμητική τιμή έως το εύρος ενός διπλού
Παραλλαγή (με χαρακτήρες) 22 byte + μήκος συμβολοσειράς Το ίδιο εύρος με αυτό για τη συμβολοσειρά μεταβλητού μήκους
Ορισμένο από τον χρήστη Διαφέρει Το εύρος κάθε στοιχείου είναι το ίδιο με το εύρος του τύπου δεδομένων του.

Όταν καθορίζετε έναν τύπο δεδομένων για μια μεταβλητή στον κώδικά σας, ενημερώνει το VBA πώς να αποθηκεύσει αυτήν τη μεταβλητή και πόσο χώρο να διαθέσει για αυτήν.

Για παράδειγμα, εάν πρέπει να χρησιμοποιήσετε μια μεταβλητή που προορίζεται να διατηρήσει τον αριθμό μήνα, μπορείτε να χρησιμοποιήσετε τον τύπο δεδομένων BYTE (ο οποίος μπορεί να φιλοξενήσει τιμές από 0 έως 255). Δεδομένου ότι ο αριθμός του μήνα δεν πρόκειται να είναι πάνω από 12, αυτό θα λειτουργήσει καλά και θα διατηρήσει επίσης λιγότερη μνήμη για αυτήν τη μεταβλητή.

Αντίθετα, εάν χρειάζεστε μια μεταβλητή για να αποθηκεύσετε τους αριθμούς γραμμών στο Excel, πρέπει να χρησιμοποιήσετε έναν τύπο δεδομένων που μπορεί να φιλοξενήσει έναν αριθμό έως 1048756. Επομένως, είναι καλύτερο να χρησιμοποιήσετε τον τύπο δεδομένων μεγάλης διάρκειας.

Δήλωση μεταβλητών τύπων δεδομένων

Ως καλή πρακτική κωδικοποίησης, θα πρέπει να δηλώσετε τον τύπο δεδομένων μεταβλητών (ή σταθερών) κατά τη σύνταξη του κώδικα. Κάνοντας αυτό, βεβαιώνεστε ότι το VBA διαθέτει μόνο την καθορισμένη μνήμη στη μεταβλητή και αυτό μπορεί να κάνει τον κώδικά σας να τρέξει γρηγορότερα.

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

Sub DeclaringVariables () Dim X As Integer Dim Email As String Dim Name Όνομα ως συμβολοσειρά Dim RowΜετρήστε όσο καιρό Dim Σήμερα Ημερομηνία ως ημερομηνία λήξης Sub

Για να δηλώσετε έναν μεταβλητό τύπο δεδομένων, πρέπει να χρησιμοποιήσετε τη δήλωση DIM (που είναι συντομογραφία για Dimension).

Σε 'Dim X ως ακέραιος‘, Έχω δηλώσει τη μεταβλητή X ως ακέραιο τύπο δεδομένων.

Τώρα όταν το χρησιμοποιώ στον κωδικό μου, η VBA θα γνωρίζει ότι το X μπορεί να κρατήσει μόνο ακέραιους τύπους δεδομένων.

Εάν προσπαθήσω να εκχωρήσω μια τιμή που δεν είναι ακέραιος, θα λάβω ένα σφάλμα (όπως φαίνεται παρακάτω):

Σημείωση: Μπορείτε επίσης να επιλέξετε να μην δηλώσετε τον τύπο δεδομένων, οπότε η VBA λαμβάνει αυτόματα υπόψη τη μεταβλητή του τύπου δεδομένων παραλλαγής. Ένας τύπος δεδομένων παραλλαγής μπορεί να φιλοξενήσει οποιονδήποτε τύπο δεδομένων. Παρόλο που αυτό μπορεί να φαίνεται βολικό, δεν είναι η καλύτερη πρακτική η χρήση διαφορετικού τύπου δεδομένων. Τείνει να καταλαμβάνει περισσότερη μνήμη και μπορεί να κάνει τον κώδικα VBA να λειτουργεί πιο αργά.

Υποχρεωτική η δήλωση μεταβλητής (ρητή επιλογή)

Ενώ μπορείτε να κωδικοποιήσετε χωρίς ποτέ να δηλώσετε μεταβλητές, είναι καλή πρακτική να το κάνετε αυτό.

Εκτός από την εξοικονόμηση μνήμης και τον αποδοτικότερο κωδικό, η δήλωση μεταβλητών έχει ένα άλλο σημαντικό πλεονέκτημα - βοηθά στην παγίδευση λαθών που προκαλούνται από ορθογραφικά ονόματα μεταβλητών.

Για να βεβαιωθείτε ότι είστε υποχρεωμένοι να δηλώσετε μεταβλητές, προσθέστε την ακόλουθη γραμμή στο επάνω μέρος της μονάδας σας.

Επιλογή ρητή

Όταν προσθέτετε «Option Explicit», θα πρέπει να δηλώσετε όλες τις μεταβλητές πριν εκτελέσετε τον κώδικα. Εάν υπάρχει κάποια μεταβλητή που δεν έχει δηλωθεί, το VBA θα εμφανίσει σφάλμα.

Υπάρχει τεράστιο όφελος από τη χρήση της Option Explicit.

Μερικές φορές, μπορεί να καταλήξετε να κάνετε λάθος πληκτρολόγησης και να εισαγάγετε ένα όνομα μεταβλητής που είναι εσφαλμένο.

Κανονικά, δεν υπάρχει τρόπος για το VBA να γνωρίζει αν είναι λάθος ή είναι σκόπιμο. Ωστόσο, όταν χρησιμοποιείτε το "Option Explicit", το VBA θα βλέπει το όνομα της μεταβλητής με ανορθόγραφο λάθος ως μια νέα μεταβλητή που δεν έχει δηλωθεί και θα σας εμφανίσει σφάλμα. Αυτό θα σας βοηθήσει να προσδιορίσετε αυτά τα ορθογραφικά ονόματα μεταβλητών, τα οποία μπορεί να είναι αρκετά δύσκολο να εντοπιστούν σε έναν μακρύ κώδικα.

Παρακάτω είναι ένα παράδειγμα όπου η χρήση του "Option Explicit" προσδιορίζει το σφάλμα (το οποίο δεν θα μπορούσε να είχε παγιδευτεί αν δεν χρησιμοποιούσα το "Option Explicit")

Sub CommissionCalc () Dim CommissionRate As Double If Range ("A1"). Τιμή> 10000 Στη συνέχεια, CommissionRate = 0.1 Else CommissionRtae = 0.05 Τέλος αν MsgBox "Συνολική προμήθεια:" & Εύρος ("A1"). Τιμή * CommissionRate Τέλος υπο

Σημειώστε ότι έχω γράψει λάθος τη λέξη "CommissionRate" μία φορά σε αυτόν τον κώδικα.

Εάν δεν χρησιμοποιήσω το Option Explicit, αυτός ο κώδικας θα εκτελεστεί και θα μου δώσει λανθασμένη συνολική τιμή προμήθειας (σε περίπτωση που η τιμή στο κελί A1 είναι μικρότερη από 10000).

Αλλά αν χρησιμοποιήσω το Option Explicit στο επάνω μέρος της μονάδας, δεν θα με αφήσει να εκτελέσω αυτόν τον κώδικα προτού είτε διορθώσω τη λέξη που δεν έχει ορθογραφία είτε την δηλώσω ως άλλη μεταβλητή. Θα εμφανίσει ένα σφάλμα όπως φαίνεται παρακάτω:

Ενώ μπορείτε να εισάγετε τη γραμμή "Option Explicit" κάθε φορά που κωδικοποιείτε, ακολουθούν τα βήματα για να εμφανιστεί από προεπιλογή:

  1. Στη γραμμή εργαλείων VB Editor, κάντε κλικ στην επιλογή Εργαλεία.
  2. Κάντε κλικ στην επιλογή Επιλογές.
  3. Στο παράθυρο διαλόγου Επιλογές, κάντε κλικ στην καρτέλα Επεξεργαστής.
  4. Ελέγξτε την επιλογή - "Απαιτείται δήλωση μεταβλητής".
  5. Κάντε κλικ στο OK.

Μόλις ενεργοποιήσετε αυτήν την επιλογή, κάθε φορά που ανοίγετε μια νέα μονάδα, το VBA θα προσθέτει αυτόματα τη γραμμή "Option Explicit" σε αυτήν.

Σημείωση: Αυτή η επιλογή θα επηρεάσει μόνο οποιαδήποτε μονάδα δημιουργείτε μετά την ενεργοποίηση αυτής της επιλογής. Όλες οι υπάρχουσες ενότητες δεν επηρεάζονται.

Πεδίο εφαρμογής των μεταβλητών

Μέχρι στιγμής, έχουμε δει πώς να δηλώνουμε μια μεταβλητή και να εκχωρούμε τύπους δεδομένων σε αυτήν.

Σε αυτήν την ενότητα, θα καλύψω το εύρος των μεταβλητών και τον τρόπο με τον οποίο μπορείτε να δηλώσετε ότι μια μεταβλητή θα χρησιμοποιηθεί μόνο σε μια υπορουτίνα, σε μια ολόκληρη ενότητα ή σε όλες τις ενότητες.

Το εύρος μιας μεταβλητής καθορίζει πού μπορεί να χρησιμοποιηθεί η μεταβλητή στο VBA,

Υπάρχουν τρεις τρόποι επέκτασης μιας μεταβλητής στο Excel VBA:

  1. Μέσα σε μία μόνο υπορουτίνα (Τοπικές μεταβλητές)
  2. Μέσα σε μια ενότητα (μεταβλητές επιπέδου ενότητας)
  3. Σε όλες τις ενότητες (Δημόσιες μεταβλητές)

Ας δούμε αναλυτικά καθένα από αυτά.

Εντός μιας μεμονωμένης υπορουτίνας (Τοπικές μεταβλητές)

Όταν δηλώνετε μια μεταβλητή εντός μιας υπορουτίνας/διαδικασίας, τότε αυτή η μεταβλητή είναι διαθέσιμη μόνο για αυτήν την υπορουτίνα.

Δεν μπορείτε να το χρησιμοποιήσετε σε άλλες υπορουτίνες της ενότητας.

Μόλις τελειώσει η υπορουτίνα, η μεταβλητή διαγράφεται και η μνήμη που χρησιμοποιείται από αυτήν απελευθερώνεται.

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

Μέσα σε μια ενότητα (Μεταβλητές επιπέδου ενότητας)

Όταν θέλετε μια μεταβλητή να είναι διαθέσιμη για όλες τις διαδικασίες σε μια ενότητα, πρέπει να την δηλώσετε στο επάνω μέρος της ενότητας (και όχι σε καμία υπορουτίνα).

Μόλις το δηλώσετε στο επάνω μέρος της ενότητας, μπορείτε να χρησιμοποιήσετε αυτήν τη μεταβλητή σε όλες τις διαδικασίες σε αυτήν την ενότητα.

Στο παραπάνω παράδειγμα, η μεταβλητή ‘i’ δηλώνεται στο πάνω μέρος της μονάδας και είναι διαθέσιμη για χρήση από όλες τις ενότητες.

Σημειώστε ότι όταν τελειώσει η υπορουτίνα, οι μεταβλητές επιπέδου λειτουργικής μονάδας δεν διαγράφονται (διατηρεί την τιμή της).

Παρακάτω είναι ένα παράδειγμα, όπου έχω δύο κωδικούς. Όταν εκτελέσω την πρώτη διαδικασία και στη συνέχεια εκτελέσω τη δεύτερη, η τιμή του «i» γίνεται 30 (καθώς φέρει την τιμή 10 από την πρώτη διαδικασία)

Σε όλες τις ενότητες (Δημόσιες μεταβλητές)

Εάν θέλετε μια μεταβλητή να είναι διαθέσιμη σε όλη τη διαδικασία του βιβλίου εργασίας, πρέπει να την δηλώσετε με τη λέξη -κλειδί Δημόσιο (αντί για DIM).

Η παρακάτω γραμμή κώδικα στο επάνω μέρος της ενότητας θα καθιστούσε τη μεταβλητή «CommissionRate» διαθέσιμη σε όλες τις ενότητες του βιβλίου εργασίας.

 Public CommissionRate As Double

Μπορείτε να εισαγάγετε τη δήλωση μεταβλητής (χρησιμοποιώντας τη δημόσια λέξη -κλειδί), σε οποιαδήποτε από τις ενότητες (στο επάνω μέρος πριν από οποιαδήποτε διαδικασία).

Στατικές μεταβλητές (που διατηρούν την τιμή)

Όταν εργάζεστε με τοπικές μεταβλητές, μόλις τελειώσει η διαδικασία, η μεταβλητή θα χάσει την τιμή της και θα διαγραφεί από τη μνήμη του VBA.

Σε περίπτωση που θέλετε η μεταβλητή να διατηρήσει την τιμή, πρέπει να χρησιμοποιήσετε το Στατικός λέξη -κλειδί.

Επιτρέψτε μου πρώτα να σας δείξω τι συμβαίνει σε μια κανονική περίπτωση.

Στον παρακάτω κώδικα, όταν εκτελώ τη διαδικασία πολλές φορές, θα εμφανίζει την τιμή 10 κάθε φορά.

Sub Procedure1 () Dim i As Integer i = i + 10 MsgBox i End Sub

Τώρα αν χρησιμοποιήσω τη λέξη -κλειδί Static αντί για DIM και εκτελέσω τη διαδικασία πολλές φορές, θα συνεχίσει να εμφανίζει τιμές σε βήματα των 10. Αυτό συμβαίνει καθώς η μεταβλητή «i» διατηρεί την τιμή της και τη χρησιμοποιεί στον υπολογισμό.

Sub Procedure1 () Static i As Integer i = i + 10 MsgBox i End Sub

Δήλωση σταθερών στο Excel VBA

Ενώ οι μεταβλητές μπορούν να αλλάξουν κατά την εκτέλεση του κώδικα, αν θέλετε να έχετε σταθερές τιμές, μπορείτε να χρησιμοποιήσετε σταθερές.

Ένα σταθερό σάς επιτρέπει να αντιστοιχίσετε μια τιμή σε μια συμβολοσειρά με όνομα που μπορείτε να χρησιμοποιήσετε στον κώδικά σας.

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

Για παράδειγμα, εάν υπολογίζετε προμήθειες και το ποσοστό προμήθειας είναι 10%, μπορείτε να δημιουργήσετε μια σταθερά (CommissionRate) και να της αντιστοιχίσετε την τιμή 0,1.

Στο μέλλον, εάν αλλάξει το ποσοστό προμήθειας, απλά πρέπει να κάνετε την αλλαγή σε ένα μέρος αντί να την αλλάξετε με μη αυτόματο τρόπο στον κώδικα παντού.

Παρακάτω είναι ένα παράδειγμα κώδικα όπου έχω εκχωρήσει μια τιμή στη σταθερά:

Sub CalculateCommission () Dim CommissionValue As Double Const CommissionRate As Double = 0.1 CommissionValue = Range ("A1") * CommissionRate MsgBox CommissionValue End Sub

Η ακόλουθη γραμμή χρησιμοποιείται για να δηλώσει τη σταθερά:

Κατασκευή CommissionRate As Double = 0,1

Όταν δηλώνετε σταθερές, πρέπει να ξεκινήσετε με τη λέξη -κλειδί «Κωνστ«, Ακολουθούμενο από το όνομα της σταθεράς.

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

Εάν δεν δηλώσετε τον τύπο δεδομένων, θα θεωρηθεί ως τύπος δεδομένων παραλλαγής.

Ακριβώς όπως οι μεταβλητές, οι σταθερές μπορούν επίσης να έχουν εύρος με βάση το πού και πώς δηλώνονται:

  1. Μέσα σε ένα μόνο υποπρόγραμμα (Τοπικές σταθερές): Αυτά είναι διαθέσιμα στην υπορουτίνα/διαδικασία στην οποία δηλώνονται. Καθώς τελειώνει η διαδικασία, αυτές οι σταθερές διαγράφονται από τη μνήμη του συστήματος.
  2. Μέσα σε μια ενότητα (σταθερές σε επίπεδο μονάδας): Αυτά δηλώνονται στο πάνω μέρος της ενότητας (πριν από οποιαδήποτε διαδικασία). Αυτά είναι διαθέσιμα για όλες τις διαδικασίες της ενότητας.
  3. Σε όλες τις ενότητες (Δημόσιες σταθερές): Αυτά δηλώνονται χρησιμοποιώντας τη λέξη -κλειδί «Δημόσιο», στο επάνω μέρος κάθε ενότητας (πριν από οποιαδήποτε διαδικασία). Αυτά είναι διαθέσιμα σε όλες τις διαδικασίες σε όλες τις ενότητες.

Μπορεί επίσης να σας αρέσουν τα ακόλουθα μαθήματα VBA:

  • Πώς να καταγράψετε μια μακροεντολή στο Excel
  • Εργασία με κελιά και εύρη στο Excel VBA
  • Εργασία με φύλλα εργασίας χρησιμοποιώντας Excel VBA
  • Εργασία με βιβλία εργασίας στο Excel VBA
  • Εκδηλώσεις VBA
  • Βρόχοι Excel VBA
  • Πώς να εκτελέσετε μια μακροεντολή στο Excel
  • Αν Στη συνέχεια δήλωση άλλου στο Excel VBA.

Θα βοηθήσει στην ανάπτυξη του τόπου, μοιράζονται τη σελίδα με τους φίλους σας

wave wave wave wave wave