Μετρητής VBA | Πώς να δημιουργήσετε μετρητή στο Excel VBA; (με παραδείγματα)

Μετρητής Excel VBA

Υπάρχει η διαφορετική συνάρτηση στο MS Excel για την καταμέτρηση τιμών είτε πρόκειται για συμβολοσειρά, αριθμούς. Η μέτρηση μπορεί να γίνει με βάση ορισμένα κριτήρια. Οι συναρτήσεις περιλαμβάνουν COUNT, COUNTA, COUNTBLANK, COUNTIF και COUNTIFS στο excel. Ωστόσο, αυτές οι συναρτήσεις δεν μπορούν να κάνουν κάποιες εργασίες, όπως η μέτρηση των κελιών με βάση το χρώμα τους, η μέτρηση μόνο των έντονων τιμών κ.λπ.

Ας δημιουργήσουμε έναν μετρητή στο excel VBA.

Παραδείγματα μετρητή Excel VBA

Μπορείτε να κάνετε λήψη αυτού του προτύπου VBA Counter Excel εδώ - Πρότυπο VBA Counter Excel

Ακολουθούν παραδείγματα του μετρητή στο VBA.

Παράδειγμα # 1

Ας υποθέσουμε ότι έχουμε δεδομένα όπως παραπάνω για 32 σειρές. Θα δημιουργήσουμε έναν μετρητή VBA, ο οποίος θα μετρά τις τιμές, οι οποίες είναι μεγαλύτερες από 50 και ένας ακόμη μετρητής για να μετρήσει τις τιμές, οι οποίες είναι μικρότερες από 50. Θα δημιουργήσουμε τον κώδικα VBA με αυτόν τον τρόπο έτσι ώστε ο χρήστης να μπορεί να έχει δεδομένα για απεριόριστες σειρές στο Excel.

Για να κάνετε το ίδιο, τα βήματα θα ήταν:

Βεβαιωθείτε ότι η  καρτέλα Προγραμματιστής Excel είναι ορατή. Για να κάνετε την καρτέλα ορατή (αν όχι), τα βήματα είναι:

Κάντε κλικ στην καρτέλα «Αρχείο» στην κορδέλα και επιλέξτε «Επιλογή» από τη λίστα.

Επιλέξτε « Προσαρμογή κορδέλας» από τη λίστα, επιλέξτε το πλαίσιο «Προγραμματιστής» και κάντε κλικ στο OK .

Τώρα η καρτέλα «Προγραμματιστής» είναι ορατή.

Εισαγάγετε το κουμπί εντολής χρησιμοποιώντας την εντολή «Εισαγωγή» που είναι διαθέσιμη στην ομάδα «Έλεγχοι» στην καρτέλα «Προγραμματιστής» .

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

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

Επιλέξτε "Ιδιότητες" από το μενού.

Αλλάξτε τις ιδιότητες του κουμπιού εντολής, δηλαδή, Όνομα, Λεζάντα και Γραμματοσειρά κ.λπ.

Κάντε δεξί κλικ ξανά και επιλέξτε το «View Code» από το μενού με βάση τα συμφραζόμενα.

Το Visual Basic Editor ανοίγει τώρα και από προεπιλογή, έχει δημιουργηθεί ήδη μια υπορουτίνα για το κουμπί εντολής.

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

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

Θα τρέξουμε ένα βρόχο «για» στο VBA για να ελέγξουμε τις τιμές που γράφονται στο κελί A2 έως το τελευταίο γεμάτο κελί στη στήλη A. Θα αυξήσουμε την τιμή της μεταβλητής «μετρητής» κατά 1 εάν η τιμή είναι μεγαλύτερη από 50 και θα αλλάξουμε το χρώμα γραμματοσειράς του κελιού σε «Μπλε» και εάν η τιμή είναι μικρότερη από 50, τότε το χρώμα γραμματοσειράς του κελιού θα είναι «Κόκκινο» .

Μετά τον έλεγχο και την καταμέτρηση, πρέπει να εμφανίσουμε τις τιμές. Για να κάνουμε το ίδιο, θα χρησιμοποιήσουμε το «VBA MsgBox».

Κώδικας:

 Private Sub CountingCellsbyValue_Click () Dim i, counter As Integer Dim lastrow As Long Lastrow = Range ("A1"). CurrentRegion.End (xlDown). Row For i = 2 To Lastrow If Cells (i, 1). Τιμή> 50 τότε μετρητής = μετρητής + 1 κελιά (i, 1). Font.ColorIndex = 5 Else Cells (i, 1) .Font.ColorIndex = 3 End if Next i MsgBox "Υπάρχουν τιμές" & counter & "που είναι μεγαλύτερες από 50" & _ vbCrLf & "Υπάρχουν" & lastrow - μετρητές & "τιμές που είναι μικρότερες από 50" End Sub 

Απενεργοποιήστε τη "Λειτουργία σχεδίασης" και κάντε κλικ στο "κουμπί εντολής" . Το αποτέλεσμα θα έχει ως εξής.

Παράδειγμα # 2

Ας υποθέσουμε ότι θέλουμε να δημιουργήσουμε το χρονομετρητή χρησιμοποιώντας το excel VBA ως εξής:

Εάν κάνουμε κλικ στο κουμπί "Έναρξη" , ξεκινά ο χρονοδιακόπτης και αν κάνουμε κλικ στο κουμπί "Διακοπή" , ο χρονοδιακόπτης σταματά.

Για να κάνετε το ίδιο, τα βήματα θα ήταν:

Δημιουργήστε μια τέτοια μορφή σε ένα φύλλο excel.

Αλλάξτε τη μορφή του κελιού A2 ως «hh: mm: ss» .

Συγχωνεύστε τα κελιά C3 στο G7 χρησιμοποιώντας την  εντολή Merge and Center Excel στην ομάδα "Ευθυγράμμιση" στην καρτέλα "Αρχική σελίδα" .

Δώστε την αναφορά του κελιού A2 για μόλις συγχωνευμένο κελί και, στη συνέχεια, κάντε τη μορφοποίηση όπως κάντε το στυλ γραμματοσειράς σε "Baskerville" , μέγεθος γραμματοσειράς έως 60 κ.λπ.

Δημιουργήστε δύο κουμπιά εντολών «Έναρξη» και «Διακοπή» χρησιμοποιώντας την εντολή «Εισαγωγή» που είναι διαθέσιμη στην ομάδα «Έλεγχοι» στην καρτέλα «Προγραμματιστής» .

Χρησιμοποιώντας την εντολή "Ιδιότητες" που είναι διαθέσιμη στην ομάδα "Έλεγχοι" στην καρτέλα "Προγραμματιστής" , αλλάξτε τις ιδιότητες.

Επιλέξτε τα κουμπιά εντολών ένα προς ένα και επιλέξτε την εντολή «View Code» από την ομάδα «Controls» στην καρτέλα «Developer» για να γράψετε τον κώδικα ως εξής.

Επιλέξτε από το αναπτυσσόμενο μενού το κατάλληλο κουμπί εντολής.

Εισαγάγετε μια ενότητα στο "ThisWorkbook" κάνοντας δεξί κλικ στο "Thisworkbook" και, στη συνέχεια, επιλέξτε "Insert" και στη συνέχεια "Module" .

Γράψτε τον ακόλουθο κώδικα στην ενότητα.

Κώδικας:

 Sub start_time () Application.OnTime Now + TimeValue ("00:00:01"), "next_moment" End Sub Sub end_time () Application.OnTime Now + TimeValue ("00:00:01"), "next_moment",, False End Sub Sub next_moment () Εάν τα φύλλα εργασίας ("Time Counter"). Range ("A2"). Value = 0 Then Exit Sub Worksheets ("Time Counter"). Range ("A2"). Value = Worksheets ("Time Μετρητής "). Εύρος (" A2 "). Τιμή - TimeValue (" 00:00:01 ") start_time End Sub 

Έχουμε χρησιμοποιήσει τη μέθοδο « onTime » του αντικειμένου εφαρμογής , το οποίο χρησιμοποιείται για την εκτέλεση μιας διαδικασίας σε προγραμματισμένη ώρα. Η διαδικασία, την οποία έχουμε προγραμματίσει να εκτελέσουμε, είναι "next_moment" .

Αποθηκεύστε τον κωδικό. Γράψτε την ώρα στο κελί A2 και κάντε κλικ στο κουμπί "Έναρξη" για να ξεκινήσετε τον μετρητή ώρας.

Παράδειγμα # 3

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

Για να κάνουμε το ίδιο, θα γράψουμε τον κωδικό VBA.

Τα βήματα θα ήταν:

Ανοίξτε το πρόγραμμα επεξεργασίας της Visual Basic πατώντας συντόμευση στο excel Alt + F11 και κάντε διπλό κλικ στο "Sheet3 (Counting Number of students)" για να εισαγάγετε μια υπορουτίνα με βάση ένα συμβάν στο Sheet3.

Επιλέξτε "Φύλλο εργασίας" από το αναπτυσσόμενο μενού.

Καθώς επιλέγουμε το "Φύλλο εργασίας" από τη λίστα, μπορούμε να δούμε, υπάρχουν διάφορα συμβάντα στο παρακείμενο αναπτυσσόμενο μενού. Πρέπει να επιλέξουμε "SelectionChange" από τη λίστα.

Θα δηλώσουμε τη μεταβλητή VBA «Lastrow» για την αποθήκευση του αριθμού της τελευταίας σειράς καθώς μια λίστα για τους μαθητές μπορεί να αυξηθεί, «περάσει» για να αποθηκεύσει έναν αριθμό μαθητών που πέρασαν και «απέτυχε» να αποθηκεύσει έναν αριθμό μαθητών που απέτυχαν.

Θα αποθηκεύσουμε την τιμή του τελευταίου αριθμού σειράς στο «Lastrow».

Θα δημιουργήσουμε το βρόχο «για» για μέτρηση βάσει συνθήκης.

Έχουμε ορίσει τη συνθήκη εάν τα συνολικά σημάδια είναι μεγαλύτερα από 99, στη συνέχεια προσθέστε την τιμή 1 στη μεταβλητή «περάσει» και προσθέστε 1 τιμή στη μεταβλητή «αποτυχία» εάν η συνθήκη αποτύχει.

Η τελευταία δήλωση κάνει τον τίτλο «Περίληψη» τολμηρό.

Για να εκτυπώσετε τις τιμές στο φύλλο, ο κωδικός θα είναι:

Κώδικας:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim lastrow As Long Dim pass As Integer Dim fail as As Integer lastrow = Range ("A1"). CurrentRegion.End (xlDown). Row For i = 2 To Lastrow If Cells (i, 5 )> 99 Στη συνέχεια πέρασμα = πέρασμα + 1 Άλλο αποτυχία = αποτυχία + 1 Λήξη εάν κελιά (1, 7). Γραμμή γραμματοσειράς = True Next i Range ("G1"). Value = "Summary" Range ("G2"). Τιμή = "Ο αριθμός των μαθητών που πέρασαν είναι" & Range Pass ("G3"). Value = "Ο αριθμός των μαθητών που απέτυχαν είναι" & απέτυχε End Sub 

Τώρα όποτε υπάρχει αλλαγή στην επιλογή, οι τιμές θα υπολογίζονται ξανά όπως παρακάτω:

Πράγματα που πρέπει να θυμάστε

  1. Αποθηκεύστε το αρχείο αφού γράψετε κώδικα στο VBA με επέκταση excel .xlsm, διαφορετικά η μακροεντολή δεν θα λειτουργήσει.
  2. Χρησιμοποιήστε το βρόχο «Για» όταν έχει ήδη αποφασιστεί ότι για πόσες φορές, θα εκτελεστεί ο κώδικας στο βρόχο VBA.

$config[zx-auto] not found$config[zx-overlay] not found