VBA – application object excel
Η μητέρα όλων των αντικειμένων είναι η ίδια Excel. Aυτό το αντικείμενο το αποκαλούμε application object το οποίο δίνει πρόσβαση σε πολλές επιλογές που σχετίζονται με το Excel.
Αυτό το άρθρο προϋποθέτει ότι ο αναγνώστης διαθέτει κάποιες βασικές γνώσεις προγραμματισμού καθώς και χρήσης του Microsoft Excel.
VBA – application object – WorksheetFunction
Μπορείτε να χρησιμοποιήσετε την ιδιότητα WorksheetFunction στην VBA για Excel για να αποκτήσετε πρόσβαση σε συναρτήσεις και μεθόδους του Excel. Για παράδειγμα, δημιουργήστε ένα κουμπί εντολών στο φύλλο εργασίας σας και προσθέσετε τον παρακάτω κώδικα:
Rem υπολογισμός μέσου όρου σε μια περιοχή τιμών Range("A3").Value = Application.WorksheetFunction.Average(Range("A1:A2"))
Όταν κάνετε κλικ στο κουμπί εντολής στο φύλλο εργασίας, η Excel VBA υπολογίζει το μέσο όρο των τιμών στο κελί A1 και το κελί A2 και τοποθετεί το αποτέλεσμα στο κελί A3. Το αποτέλεσμα θα είναι:
Σημείωση: αντί Application.WorksheetFunction.Average, μπορείτε απλά να χρησιμοποιήστε μόνο WorksheetFunction.Average. Αν κοιτάξετε τη γραμμή τύπων στο Excel, μπορείτε να δείτε ότι ο ίδιος ο τύπος δεν εισάγεται στο κελί A3. Για να τοποθετήσετε το ίδιο τον τύπο στο κελί A3, χρησιμοποιήστε τον παρακάτω κώδικα:
Rem καταχώρηση του κώδικα εκτέλεσης Range("A3").Value = "=AVERAGE(A1:A2)"
VBA – application object – ScreenUpdating
Μερικές φορές μπορείτε να το βρείτε χρήσιμο να απενεργοποιήσετε την ενημέρωση της οθόνης (για να αποφευχθεί π.χ. να αργεί ή να τρεμοπαίζει) κατά την εκτέλεση κώδικα. Ως αποτέλεσμα, ο κωδικός σας θα εκτελεστεί πιο γρήγορα. Δείτε το παρακάτω παράδειγμα:
Dim i As Integer For i = 1 To 10000 Range("A1").Value = i Next i
Όταν κάνετε κλικ στο κουμπί εντολής στο φύλλο εργασίας, η Excel VBA εμφανίζει κάθε τιμή στο κελί για ένα μικρό κλάσμα του δευτερολέπτου και αυτό μπορεί να πάρει κάποιο τελικό συνολικό χρόνο. Για παράδειγμα, στο παρακάτω στιγμιότυπο:
Κατά την εκτέλεση θα δείτε στο κελί, να περνάνε όλα τα νούμερα από το 1 έως το 10000. Για να επιταχυνθεί η διαδικασία, ενημερώστε τον κώδικα ως εξής:
Dim i As Integer Application.ScreenUpdating = False For i = 1 To 10000 Range("A1").Value = i Next i Application.ScreenUpdating = True
Η ιδιότητα ScreenUpdating (ανανέωση απεικόνισης οθόνης) πλέον είναι απενεργοποιημένη (false). Ως αποτέλεσμα, ο κώδικα σας θα τρέξει πολύ πιο γρήγορα και θα δείτε μόνο το τελικό αποτέλεσμα (10000). Στην συνέχεια ενεργοποιείται και πάλι.
VBA – application object – DisplayAlerts
Μπορείτε να αναθέσετε στην Excel VBA να μην εμφανίζει ειδοποιήσεις κατά την εκτέλεση κώδικα. Για παράδειγμα, δημιουργήστε ένα κουμπί εντολών στο φύλλο εργασίας σας και προσθέστε τον εξής κώδικα:
Rem κλείσιμο του αρχείου ActiveWorkbook.Close
Όταν κάνετε κλικ στο κουμπί εντολής στο φύλλο εργασίας, η Excel VBA κλείνει το αρχείο Excel και σας ζητά να αποθηκεύσετε τις αλλαγές που κάνατε:
Για να αναθέσετε στο Excel VBA να μην εμφανίζει αυτή την ειδοποίηση κατά την εκτέλεση κώδικα, ενημερώστε τον κώδικα σας, ως εξής:
Rem κλείσιμο του αρχείου Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True
Ως αποτέλεσμα, η Excel VBA κλείνει το αρχείο Excel, χωρίς να σας ζητά να αποθηκεύσετε τις αλλαγές που κάνατε. ΠΡΟΣΟΧΗ: Τυχόν αλλαγές χάνονται.
VBA – application object – Calculation
Από προεπιλογή, ο υπολογισμός των κελιών έχει οριστεί σε αυτόματη κατάσταση. Ως αποτέλεσμα, το Excel υπολογίζει εκ νέου το βιβλίο εργασίας αυτόματα κάθε φορά που μια τιμή επηρεάζει έναν τύπο ή άλλα κελιά ως αλλαγές. Εάν το βιβλίο εργασίας σας περιέχει πολλές σύνθετες φόρμουλες, μπορείτε να επιταχύνετε την εργασία σας με τον καθορισμό Calculation (υπολογισμού) ως ενεργό ή όχι στο Excel. Δείτε το παρακάτω παράδειγμα:
Rem απενεργοποίηση αυτόματων υπολογισμών Application.Calculation = xlCalculationManual
Όταν κάνετε κλικ στο κουμπί εντολής στο φύλλο εργασίας, η Excel VBA θέτει τον αυτόματο υπολογισμό σε manual κατάσταση. Μπορείτε να το επιβεβαιώσετε κάνοντας κλικ στα: Αρχείο, Επιλογές, Τύποι:
Τώρα, όταν αλλάζετε την τιμή του κελιού A1, η τιμή του κελιού B1 δεν υπολογίζεται εκ νέου.
Μπορείτε να υπολογίσετε οτιδήποτε εκ νέου, πιέζοντας το πλήκτρο F9. Τέλος, στις περισσότερες περιπτώσεις, θα ορίσετε τον υπολογισμό σε αυτόματη κατάσταση και πάλι, στο τέλος του κώδικα σας. Απλά προσθέστε την ακόλουθη γραμμή κώδικα για να επιτευχθεί αυτό:
Rem εργοποίηση αυτόματων υπολογισμών Application.Calculation = xlCalculationAutomatic