how automate repetitive qa tasks using excel macros
Αυτός ο αναλυτικός οδηγός σχετικά με τη μακροεντολή νοοτροπίας της QA εξηγεί πώς να αυτοματοποιήσετε επαναλαμβανόμενες εργασίες QA χρησιμοποιώντας μακροεντολές Excel με παραδείγματα και στιγμιότυπα οθόνης φύλλων Excel:
Η ανάγκη αυτοματοποίησης στον σημερινό κόσμο είναι μια από τις βασικές και αυξανόμενες απαιτήσεις. Σήμερα όλοι αναζητούν κάτι που διευκολύνει την εργασία του ή τις ταλαιπωρίες που εμπλέκονται στη ρουτίνα.
Σήμερα, κανείς δεν θέλει να επισκεφθεί ένα κατάστημα κινητής τηλεφωνίας, να σταθεί στην ουρά για να φορτίσει το τηλέφωνό του, είναι βολικό να μην επισκέπτεστε φυσικά οπουδήποτε, αλλά να φορτίσετε το τηλέφωνο online μέσα σε ένα κλάσμα του δευτερολέπτου.
Ξεκινώντας από την πληρωμή των λογαριασμών κοινής ωφέλειας μέσω καθαρής τραπεζικής, κράτησης και παρακολούθησης της καμπίνας σας στο διαδίκτυο, αγοράζοντας πράγματα online σε διάφορους ιστότοπους ηλεκτρονικού εμπορίου έως τη χρήση διαφορετικών αυτοματοποιημένων συσκευών όπως πλυντήρια ρούχων, φούρνο μικροκυμάτων, θερμοσίφωνας και τα συνεχώς εξελισσόμενα smartphone κ.λπ., ο κόσμος σήμερα είναι πραγματικά λαχτάρα για έξυπνα και αυτοματοποιημένα προϊόντα με τη μορφή υπηρεσιών ή gadget.
Σε αυτό το άρθρο, δεν πρόκειται να συζητήσουμε τη χρήση οποιουδήποτε εργαλείου αυτοματοποίησης ή οτιδήποτε σχετικά με την τεχνητή νοημοσύνη ή τη μηχανική μάθηση, αλλά η εστίαση θα είναι στην απλή χρήση του Excel για την αυτοματοποίηση των καθημερινών καθημερινών εργασιών ενός QA.
Τι θα μάθετε:
Macro Mindset του QA
Οι χειροκίνητοι υπεύθυνοι δοκιμών έχουν συνήθως μια νοοτροπία ότι είμαι χειροκίνητος ελεγκτής δεν έχουν καμία σχέση με τίποτα τεχνικό ή με άλλα λόγια, «η τεχνογνωσία κωδικοποίησης δεν είναι το φλιτζάνι του τσαγιού μου». Αυτή είναι πιθανώς η λανθασμένη νοοτροπία που θα μπορούσε να σταματήσει την ανάπτυξή μας ως μηχανικοί.
Ένα εγχειρίδιο QA έχει πολλές καθημερινές εργασίες που θα μπορούσαν να είναι επαναλαμβανόμενες ακολουθώντας την ίδια ροή εργασίας. Ένα QA μπορεί πολύ καλά να εντοπίσει τέτοιες εργασίες και να τα αυτοματοποιήσει χρησιμοποιώντας μακροεντολές Excel ή / και τύπους.
Αυτό θα μπορούσε να βοηθήσει με δύο τρόπους:
- Μειώνει το χρόνο που καταναλώνεται στις χειροκίνητες προσπάθειες.
- Επίσης, εμπνέει το QA να μάθει και να προσαρμοστεί στη λογική σκέψη και την αναβάθμιση στο τεχνικό μέτωπο.
Τα πράγματα μπορούν να αυτοματοποιηθούν για όλες τις φάσεις δοκιμής που αναφέρονται παρακάτω:
- Σχεδιασμός και εκτίμηση δοκιμών.
- Σχεδιασμός δοκιμής ή προετοιμασία θήκης δοκιμής.
- Ενημέρωση κατάστασης εκτέλεσης δοκιμής.
- Αναφορά δοκιμής και δημιουργία μετρήσεων.
Γρήγορη ρύθμιση περιβάλλοντος
# 1) Ένα άριστο αποθηκεύτηκε με. Η επέκταση xlsxm είναι ένα Excel με δυνατότητα μακροεντολής.
#δύο) Για να ενεργοποιήσετε τη μακροεντολή σε ένα Excel, επιλέξτε Αρχείο -> Επιλογές -> Κέντρο αξιοπιστίας -> Ρυθμίσεις κέντρου αξιοπιστίας -> Ρυθμίσεις μακροεντολών -> Επιλέξτε κουμπί ραδιοφώνου 'Ενεργοποίηση όλων των μακροεντολών' και επιλέξτε το πλαίσιο ελέγχου 'Εμπιστευτική πρόσβαση στο μοντέλο αντικειμένου έργου VBA'. Κάντε κλικ στο OK.
# 3) Επιλέξτε το μενού Προβολή -> Μακροεντολές -> Εγγραφή μακροεντολών -> Εκτελέστε κάποια δραστηριότητα και Διακοπή μακροεντολών . Μπορείτε να επεξεργαστείτε τη μακροεντολή και να προβάλετε τον κωδικό VBA που έχει εγγραφεί στο Πρόγραμμα επεξεργασίας VBA παράθυρο. Ομοίως, μπορείτε να προσθέσετε τους κωδικούς σας ρητά για να δημιουργήσετε μια μακροεντολή.
# 4) Θα ρίξουμε μια ματιά σε ορισμένα παραδείγματα τέτοιων επαναλαμβανόμενων εργασιών που θα μπορούσαν να είναι καλοί υποψήφιοι για αυτοματοποίηση μέσω μακροεντολών / τύπων Excel.
Παράδειγμα χρήσης # 1
Στο τέλος κάθε λειτουργικής φάσης, πρέπει να υπάρχουν ορισμένες δοκιμαστικές περιπτώσεις που προσδιορίζονται για παλινδρόμηση από τη λειτουργική σουίτα. Αυτή είναι μια διαδικασία που πρέπει να ακολουθείται σε κάθε σπριντ ή επανάληψη.
Λύση
Για να μειωθεί η προσπάθεια εντοπισμού και δημιουργίας χειροκίνητης σουίτας παλινδρόμησης, μπορεί να εφαρμοστεί η παρακάτω καινοτόμος διαδικασία.
- Θα μπορούσατε να δημιουργήσετε ένα φύλλο με λειτουργικές περιπτώσεις δοκιμής με μια επιπλέον στήλη για τη σήμανση των δοκιμαστικών περιπτώσεων / σεναρίων ως Ναι / Όχι για παλινδρόμηση.
- Στη συνέχεια, δημιουργήστε μια μακροεντολή για το ίδιο, έτσι ώστε όταν εκτελείται η μακροεντολή, όλες οι δοκιμαστικές περιπτώσεις / σενάρια με παλινδρόμηση με την ένδειξη 'Ναι' αντιγράφονται σε άλλο φύλλο.
- Έτσι, αυτό θα αποφύγει μια πρόσθετη άσκηση της διερεύνησης όλων των λειτουργικών δοκιμαστικών περιπτώσεων στο τέλος του σπριντ και στη συνέχεια θα καταβάλει επιπλέον προσπάθειες για την εξαγωγή κάθε δοκιμαστικής θήκης στη σουίτα παλινδρόμησης.
Διαδήλωση
- Το πρώτο φύλλο «FunctionalTestScenarios» περιέχει όλα τα λειτουργικά σενάρια δοκιμής / δοκιμαστικές περιπτώσεις.
- Υπάρχει μια επιπλέον στήλη 'Συμπερίληψη στη σουίτα παλινδρόμησης;' Προστέθηκε στο τέλος των δοκιμαστικών στηλών για να σημειωθεί «Ναι» ή «Όχι» προσδιορίζοντας εάν καθένα από τα σενάρια δοκιμής πρέπει να συμπεριληφθεί στη σουίτα παλινδρόμησης.
- Υπάρχει ένα δεύτερο φύλλο που δημιουργήθηκε ως «RegressionSuite» και αυτό θα πάρει αυτόματα όλα τα σενάρια δοκιμής παλινδρόμησης μέσω της μακροεντολής.
- Το CTRL + SHIFT + S ορίζεται ως η συντόμευση για την εκτέλεση της μακροεντολής.
Λειτουργικά σενάρια
RegressionSuite
Κωδικός VBA (Macro)
Sub RegressionSuite() ' Keyboard Shortcut: Ctrl+Shift+S Sheets('FunctionalTestScenarios').Activate Rows('1:1').Select Selection.AutoFilter Sheet1.Range('$A:$D').AutoFilter Field:=4, Criteria1:='Yes' Lastrow=Sheets('FunctionalTestScenarios') .Cells(Sheets('FunctionalTestScenarios').Rows.Count, 'A').End(xlUp).Row Range('A2:C2' & Lastrow).Select Selection.Copy Sheets('RegressionSuite').Select Range('A2').Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False End Sub
Επεξήγηση του κώδικα
- Φύλλα ('FunctionalTestScenarios'). Θέτω εις ενέργειαν: Όταν υπάρχουν πολλά φύλλα στο Excel, η μέθοδος Ενεργοποίηση ενεργοποιεί το πρώτο φύλλο και ως εκ τούτου η εστίαση ορίζεται ρητά στο πρώτο φύλλο.
- Σειρές ('1: 1'). Επιλέξτε: Αυτή η δήλωση επιλέγει την πρώτη σειρά για όλες τις στήλες του πρώτου φύλλου.
- Επιλογή. AutoFilter: Αυτή η δήλωση εφαρμόζει το φίλτρο στην επιλεγμένη πρώτη σειρά.
- Sheet1.Range ('$ A $ 1: $ D $ 38 ″). AutoFilter Field: = 4, Criteria1: =' Yes ': Αυτή η δήλωση εφαρμόζει το αυτόματο φίλτρο στη στήλη αριθμός 4, δηλ. 'Συμπερίληψη στη σουίτα παλινδρόμησης;' και φιλτράρει τις εγγραφές για την τιμή 'Ναι'.
- Lastrow = Sheets ('FunctionalTestScenarios'). Κελιά (φύλλα ('FunctionalTestScenarios'). Σειρές. Αριθμός, 'A'). End (xlUp). Σειρά: Αυτή η δήλωση λαμβάνει τον αριθμό των τελευταίων σειρών του πρώτου φύλλου.
- Εύρος ('A2: C2' & Lastrow). Επιλέξτε: Αυτή η δήλωση επιλέγει όλες τις σειρές και τις στήλες του πρώτου φύλλου με το Include in Regression suite? = Ναι.
- Επιλογή. Αντιγραφή: Αυτή η δήλωση αντιγράφει όλες τις επιλεγμένες εγγραφές.
- Φύλλα ('RegressionSuite'). Επιλέξτε: Αυτή η δήλωση ανοίγει το 2αρσεντόνι.
- Εύρος ('A2'). Επιλέξτε: Αυτή η δήλωση επιλέγει το κελί A2 του 2αρσεντόνι.
- Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False: Αυτή η δήλωση αντιγράφει την προεπιλεγμένη τιμή κελιού στο φύλλο προορισμού. Το εύρος κελιών προορισμού περιέχει μόνο τις υπολογισμένες τιμές χρησιμοποιώντας τους τύπους. Εναλλακτικά, μπορεί επίσης να χρησιμοποιηθεί Paste: = xlValues. Δεν παραλείπονται κενά. Τα κελιά προέλευσης δεν έχουν μεταφερθεί και δεν γίνονται μαθηματικές λειτουργίες.
Παράδειγμα χρήσης # 2
Υπάρχουν φορές που πρέπει να δημιουργήσετε δοκιμαστικές υποθέσεις για 100 πολιτείες ή 1000 οντότητες (όπως 1000 έντυπα ασφάλισης). Τα βήματα δοκιμής για αυτόν τον τεράστιο κατάλογο πολιτειών ή οντοτήτων θα μπορούσαν να είναι τα ίδια και επαναλαμβανόμενα.
Παρ 'όλα αυτά, η προετοιμασία της δοκιμαστικής θήκης θα μπορούσε να είναι μια από τις πιο χρονοβόρες δραστηριότητες, ότι η ύπαρξη του εγγράφου της δοκιμαστικής θήκης είναι πολύ σημαντική για την αγορά των απαιτούμενων εκτιμήσεων από τον πελάτη και να ζητήσει από την ομάδα QA να δοκιμάσει κάθε μία από τις δοκιμαστικές περιπτώσεις εντός τα σωστά εκτιμώμενα χρονοδιαγράμματα.
Λύση
Σε τέτοιες περιπτώσεις, οι μεγάλες προσπάθειες προετοιμασίας δοκιμαστικών περιπτώσεων μπορούν να μειωθούν σε κλάσμα δευτερολέπτων χρησιμοποιώντας τη μακροεντολή.
- Μπορείτε να δημιουργήσετε ένα φύλλο όπου απλώς παρέχετε την εισαγωγή ως αναγνωριστικό περίπτωσης δοκιμής και τη μοναδική λίστα οντοτήτων.
- Δημιουργήστε μια μακροεντολή η οποία όταν εκτελείται, προσθέτει επαναλαμβανόμενες γραμμές δοκιμαστικών βημάτων για καθεμία από αυτές τις οντότητες και το έγγραφο δοκιμαστικής υπόθεσης είναι έτοιμο σε λίγα δευτερόλεπτα χωρίς να χρειάζεται να ξοδέψετε το σημαντικό ποσό των μη αυτόματων προσπαθειών που απαιτούνται για την προετοιμασία των δοκιμαστικών περιπτώσεων.
Διαδήλωση
- Το πρώτο φύλλο «GetTestcasesASAP» είναι το μόνο φύλλο που βασίζεται στη μακροεντολή εδώ και είναι αρχικά κενό.
- Ένα άλλο φύλλο «Δείγμα δεδομένων εισαγωγής» δεν παίζει ρόλο στη μακροεντολή. Διατηρεί απλώς το δείγμα δεδομένων εισόδου για σκοπούς επίδειξης.
- Αντιγραφή-επικόλληση δεδομένων από το δείγμα δεδομένων εισόδου Α2 έως Β12 στο πρώτο φύλλο.
- Μπορείτε να αντιγράψετε-επικολλήσετε τα δεδομένα εισόδου με τη μορφή - Στήλη A = ……. και στήλη B =.
- Μόλις τα δεδομένα εισαγωγής είναι έτοιμα, πατήστε CTRL + SHIFT + T ως πλήκτρα συντόμευσης για την εκτέλεση της μακροεντολής.
- Τα βήματα δοκιμής προστίθενται αυτόματα για κάθε αναγνωριστικό περίπτωσης δοκιμής και το έγγραφο δοκιμαστικής υπόθεσης προετοιμάζεται σε λίγα δευτερόλεπτα.
GetTestcasesASAP
Δείγμα δεδομένων εισαγωγής
Τα δεδομένα εισαγωγής επικολλήθηκαν στο πρώτο φύλλο.
Image Ενώ εκτελείται μακροεντολή πατώντας CTRL + SHIFT + T.
Κωδικός VBA (Macro)
Sub GetTestcasesQuick() ' GetTestcasesQuick Macro ' Keyboard Shortcut: Ctrl+Shift+T Sheets('GetTestcasesASAP').Activate lastrow =Sheets('GetTestcasesASAP').Cells(Sheets('GetTestcasesASAP').Rows.Count, 'A').End(xlUp).Row Dim AddRows As Integer AddRows = 5 Dim i As Integer i = lastrow Do While i <> 1 Rows(i & ':' & i + AddRows).Insert i = i - 1 Loop ScreenUpdating = True lastrow = Sheets('GetTestcasesASAP').Cells(Sheets('GetTestcasesASAP').Rows.Count, 'A').End(xlUp).Row i = 2 While i <= lastrow + 6 Sheets('GetTestcasesASAP').Cells(i, 3) = 'Validate rates-factor combinations' Sheets('GetTestcasesASAP').Cells(i + 1, 3) = 'Batch job schedules and runs. ' Sheets('GetTestcasesASAP').Cells(i + 2, 3) = 'Commissioning calculations settlements' Sheets('GetTestcasesASAP').Cells(i + 3, 3) = 'Quick and detailed quote' Sheets('GetTestcasesASAP').Cells(i + 4, 3) = 'Benefit illustration ' Sheets('GetTestcasesASAP').Cells(i + 5, 3) = 'Benefit summary validation' i = i + 7 Wend End Sub
Επεξήγηση του κώδικα
(α) Φύλλα ('GetTestcasesASAP'). Ενεργοποίηση: Αυτή η δήλωση ενεργοποιεί το πρώτο φύλλο.
καλύτερο λογισμικό για τον καθαρισμό του υπολογιστή
(b) lastrow = Sheets ('GetTestcasesASAP'). Κελιά (Sheets ('GetTestcasesASAP'). Rows.Count, 'A'). End (xlUp). Σειρά: Αυτή η δήλωση λαμβάνει τον αριθμό των τελευταίων σειρών. Αυτή τη φορά θα λάβει τον συνολικό αριθμό των αριθμών σειρών για τα αρχικά αναγνωριστικά περιπτώσεων δοκιμής που μόλις προστέθηκαν ως μέρος των δεδομένων εισαγωγής πριν από την εκτέλεση της μακροεντολής.
(γ) Dim AddRows ως ακέραιος: Αυτή η δήλωση δηλώνει τη μεταβλητή AddRows ως ακέραιο τύπο δεδομένων.
(δ) AddRows = 5: Αυτή η δήλωση προετοιμάζει το AddRows με το 5. Η μεταβλητή χρησιμοποιείται για να εισαγάγει μερικές γραμμές μετά από κάθε αναγνωριστικό περίπτωσης δοκιμής έτσι ώστε να μπορούν να προστεθούν στατικά στάδια δοκιμής για κάθε δοκιμαστική περίπτωση.
(ε) Dim i As ακέραιος: Αυτή η δήλωση δηλώνει τη μεταβλητή i ως ακέραιο.
(στ) i = lastrow : Αυτή η δήλωση εκχωρεί τον αρχικό αριθμό τελευταίων σειρών στη μεταβλητή i.
(ζ) Κάνετε ενώ εγώ 1 : Αυτό γίνεται ενώ ο βρόχος εισάγει 6 κενές σειρές μετά από κάθε αναγνωριστικό περίπτωσης δοκιμής. Η επανάληψη ξεκινά από το τελευταίο αναγνωριστικό της υπόθεσης που προχωρά μέχρι το πρώτο αναγνωριστικό της υπόθεσης.
Σειρές (i & ':' & i + AddRows). Εισαγωγή
i = i - 1
Βρόχος
(h) ScreenUpdating = True : Αυτή η δήλωση καθιστά κάθε ενημέρωση οθόνης ορατή. Ως εκ τούτου, η απόδοση της μακροεντολής μπορεί να είναι ελαφρώς αργή. Για να βελτιστοποιήσετε την απόδοση της μακροεντολής, μπορείτε επίσης να ορίσετε ScreenUpdating = Λάθος .
Η ρύθμιση της οθόνης Η ενημέρωση σε False βελτιώνει την απόδοση της μακροεντολής και επιταχύνει την εκτέλεση, ωστόσο, δεν θα μπορείτε να δείτε τις διαλείπουσες αλλαγές που πραγματοποιούνται κατά την εκτέλεση της μακροεντολής. Αντίθετα, οι αλλαγές θα εμφανίζονται μόνο όταν ολοκληρωθεί η εκτέλεση της μακροεντολής.
(i) lastrow = Sheets ('GetTestcasesASAP'). Κελιά (Sheets ('GetTestcasesASAP'). Rows.Count, 'A'). End (xlUp). Row : Αυτή η δήλωση υπολογίζει ξανά τον αριθμό των τελευταίων σειρών μετά την προσθήκη νέων 6 σειρών για κάθε δοκιμαστικό κουτί.
(j) i = 2
(k) Ενώ εγώ<= lastrow + 6
Φύλλα ('GetTestcasesASAP'). Κελιά (i, 3) = 'Επικύρωση συνδυασμών ποσοστών-συντελεστών'
Φύλλα ('GetTestcasesASAP'). Κελιά (i + 1, 3) = 'Μαζικά χρονοδιαγράμματα και τρέχουσες εργασίες. «
Φύλλα ('GetTestcasesASAP'). Κελιά (i + 2, 3) = 'Εκκαθάριση υπολογισμών εκκίνησης'
Φύλλα ('GetTestcasesASAP'). Κελιά (i + 3, 3) = 'Γρήγορη και λεπτομερή προσφορά'
Φύλλα ('GetTestcasesASAP'). Κελιά (i + 4, 3) = 'Εφέ ωφέλειας'
Φύλλα ('GetTestcasesASAP'). Κελιά (i + 5, 3) = 'Επικύρωση σύνοψης παροχών'
i = i + 7
Ισχύουν
Αυτό το απόσπασμα του loop loop προσθέτει 6 βήματα στατικών δοκιμαστικών βημάτων για κάθε δοκιμαστικό κουτί, ορίζοντας αυτές τις γραμμές στη συνέχεια μετά από κάθε αναγνωριστικό τεστ.
Τα βήματα στατικής δοκιμής που προστέθηκαν για κάθε δοκιμαστική υπόθεση έχουν ως εξής:
- Βήμα 1: Επικύρωση συνδυασμών ποσοστών-συντελεστών.
- Βήμα 2: Προγραμματισμένες εργασίες και εργασίες.
- Βήμα 3: Εκκαθάριση υπολογισμών σε λειτουργία.
- Βήμα 4: Γρήγορη και λεπτομερή αναφορά.
- Βήμα 5: Εικονογράφηση όφελος.
- Βήμα 6: Περίληψη επικύρωσης παροχών.
Εκτός αυτού, ωθεί επίσης την επόμενη δοκιμαστική περίπτωση Id στην ακολουθία σε 6 + 2, δηλ. 8ουσειρά.
Π.χ: Εάν το TC1 βρίσκεται στην πρώτη σειρά, τα βήματα προστίθενται από τη δεύτερη έως την έβδομη σειρά και το TC2 ωθείται στην όγδοη σειρά. Παρόμοια μόδα ακολουθείται και για τα υπόλοιπα αναγνωριστικά της υπόθεσης.
Παράδειγμα χρήσης # 3
Υπάρχουν περιπτώσεις όπου ένα τεράστιο αρχείο δεδομένων κάπου κοντά σε 1000 εγγραφές ή περισσότερα παρέχεται από τον πελάτη και η σύνταξη δοκιμαστικών περιπτώσεων για αυτά τα τεράστια αρχεία και η χαρτογράφηση κάθε δεδομένων σε κάθε βήμα δοκιμής είναι μια κουραστική δουλειά. Η μακροεντολή μπορεί να μειώσει τις ημέρες της προσπάθειας σε λίγα λεπτά εξοικονομώντας έτσι τον χρόνο προετοιμασίας της δοκιμαστικής θήκης.
Λύση
Το αρχείο δεδομένων που παρέχεται από τον πελάτη μπορεί να αντιγραφεί στο φύλλο με δυνατότητα μακροεντολής. Κατά την εκτέλεση της μακροεντολής, οι δοκιμαστικές περιπτώσεις δημιουργούνται αυτόματα στο δεύτερο φύλλο με αυτόματη αντιστοίχιση δεδομένων δοκιμής σε κάθε βήμα δοκιμής για κάθε δοκιμαστική περίπτωση.
Διαδήλωση
- Το πρώτο φύλλο 'InputFile' και το δεύτερο φύλλο «Έτοιμες δοκιμές» είναι οι κύριοι συντελεστές στη μακροεντολή.
- Ένα άλλο φύλλο 'Sample -InputFile' δεν παίζει ρόλο στη μακροεντολή. Διατηρεί απλώς το δείγμα αρχείου δεδομένων εισόδου για σκοπούς επίδειξης.
- Μόλις τα δεδομένα από 'Sample-InputFile' ή το αρχείο δεδομένων που παρέχεται από τον πελάτη αντιγράφεται στο πρώτο φύλλο, δηλαδή «InputFile»,
- Εκτελέστε τη μακροεντολή και οι δοκιμαστικές περιπτώσεις δημιουργούνται αυτόματα για κάθε δοκιμαστική περίπτωση όπου τα αναγνωριστικά παραγγελίας έχουν οριστεί ως αναγνωριστικά περιπτώσεων δοκιμής ( Σημείωση: Θυμηθείτε να τοποθετήσετε το μοναδικό αναγνωριστικό που τοποθετείται ως πρώτη στήλη στο InputFile).
- Από τώρα, δεν έχουμε οριστεί πλήκτρο συντόμευσης για τη μακροεντολή, αλλά πρέπει να το εκτελέσουμε μέσω της επιλογής εκτέλεσης στο Προβολή -> Μακροεντολές -> Επιλέξτε τη μακροεντολή -> Επεξεργασία -> Παράθυρο VBA.
- Ο κώδικας μακροεντολής χειρίζεται την προσθήκη βημάτων δοκιμής δυναμικά. Κάνει έναν έλεγχο, στο τέλος, για να δει εάν κάποια από τις τιμές του πεδίου είναι κενή, εάν ναι, διαγράφει το βήμα δοκιμής για το ίδιο όπως το βήμα δεν θα απαιτηθεί για ένα κενό πεδίο. Για παράδειγμα, αν κοιτάξετε το αρχείο εισαγωγής παρακάτω, το 2αρη εγγραφή δεν έχει καμία τιμή για την ημερομηνία αποστολής και η τρίτη σειρά δεν έχει καμία τιμή για την περιοχή. Επομένως, μετά την εκτέλεση μακροεντολών, οι δοκιμαστικές περιπτώσεις που δημιουργούνται αυτόματα δεν θα έχουν βήματα δοκιμής που αντιστοιχούν σε αυτές τις κενές τιμές.
Δείγμα - InputFile
InputFile: Μετά την εκτέλεση αντιγράφων επικόλλησης δεδομένων από το δείγμα InputFile έως InputFile
Σημείωση:
- Μην επικολλήσετε την κεφαλίδα της στήλης από το φύλλο 'Sample-InputFile'.
- Τα κίτρινα επισημασμένα πεδία είναι κενά, επομένως τα βήματα δοκιμής που αντιστοιχούν σε αυτές τις κενές τιμές δεν πρέπει να δημιουργούνται μέσω της μακροεντολής.
Εικόνα του φύλλου ReadyTestcases μετά την εκτέλεση μακροεντολών.
Κωδικός VBA (Macro)
Sub Macro1() ScreenUpdating = False '-------- Assign the first column value of Inputfile sheet to first column of ReadyTestCases sheet' This is the TC Id -- ThisWorkbook.Sheets('InputFile').Activate nrow = ThisWorkbook.Sheets('InputFile').Cells(Rows.Count, 1).End(xlUp).Row ncol = ThisWorkbook.Sheets('InputFile').Cells(1, Columns.Count).End(xlToLeft).Column i = 1 j = 1 For i = 1 To nrow ThisWorkbook.Sheets('ReadyTestCases').Cells(i, 1) = ThisWorkbook.Sheets('InputFile').Cells(i, 1) Next i ' ---------------------Inserting 20 buffer blank rows for each row in InputFile sheet--------- lastrow = Sheets('InputFile').Cells(Sheets('InputFile').Rows.Count, 'A').End(xlUp).Row ThisWorkbook.Sheets('InputFile').Activate AddRows = 21 i = lastrow Do While i <> 1 Rows(i &; ':' & i + AddRows - 1).Insert i = i - 1 Loop ' Inserting 21 buffer blank rows for each row in ReadyTestCases sheet----------- lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'A').End(xlUp).Row ThisWorkbook.Sheets('ReadyTestCases').Activate AddRowsTC = 21 j = lastrow Do While j <> 1 ' 1 because we dont need extra blank lines after last row Rows(j & ':' & j + AddRowsTC - 1).Insert j = j - 1 Loop '------- Input values into ReadyTestCases sheet from each row of inputfile sheet lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'A').End(xlUp).Row Dim a a = 1 ThisWorkbook.Sheets('ReadyTestCases').Activate For a = 1 To lastrow ThisWorkbook.Sheets('ReadyTestCases').Cells(a,3) = ThisWorkbook.Sheets('InputFile').Cells(a, 2) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 1, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 3) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 2, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 4) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 3, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 5) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 4, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 6) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 5, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 7) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 6, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 8) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 7, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 9) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 8, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 10) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 9, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 11) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 10, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 12) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 11, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 13) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 12, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 14) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 13, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 15) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 14, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 16) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 15, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 17) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 16, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 18) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 17, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 19) a = a + 21 Next a '------- Add verbiages reserved for each row lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'C').End(xlUp).Row a = 1 ThisWorkbook.Sheets('ReadyTestCases').Activate For a = 1 To lastrow ThisWorkbook.Sheets('ReadyTestCases').Cells(a, 2) = 'Verify Order Date' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 1, 2) = 'Verify Ship Date' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 2, 2) = 'Verify Ship Mode' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 3, 2) = 'Verify Customer Id' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 4, 2) = 'Verify Customer Name' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 5, 2) = 'Verify Segment' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 6, 2) = 'Verify City' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 7, 2) = 'Verify State' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 8, 2) = 'Verify Postal Code' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 9, 2) = 'Verify Region' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 10, 2) = 'Verify Product Id' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 11, 2) = 'Verify Category' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 12, 2) = 'Verify Sub-Category' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 13, 2) = 'Verify Product Name' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 14, 2) = 'Verify Sales' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 15, 2) = 'Verify Quantity' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 16, 2) = 'Verify Discount' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 17, 2) = 'Verify Profit' a = a + 21 Next a '------Second last step- remove blank rows from ReadyTestCases and InputFile----- Deleteblankrows ('ReadyTestCases') 'call Delete blank row function for TC sheet ScreenUpdating = True End Sub ‘-------------------------------------------------------------------------------- Sub Deleteblankrows(ByVal Sheet As String) Dim wks As Worksheet Set wks = ThisWorkbook.Worksheets(Sheet) Dim i As Long wks.Activate lastrow = wks.Cells(Sheets(Sheet).Rows.Count, 'C').End(xlUp).Row With ActiveSheet For i = 1 To lastrow 'check each row of column B , if any row is empty then countA=0, delete that entire row If WorksheetFunction.CountBlank(Range(Cells(i, 2), Cells(i, 3))) = 1 Then Selection.Rows(i).EntireRow.Delete End If Next i End With End Sub
Επεξήγηση του κώδικα
# 1) ScreenUpdating = Λάθος: Οι ενημερώσεις οθόνης δεν θα είναι ορατές ρυθμίζοντας το ScreenUpdating σε False.
# 2) ThisWorkbook.Sheets ('InputFile'). Ενεργοποίηση: Αυτή η δήλωση ενεργοποιεί το φύλλο «InputFile».
# 3) nrow = ThisWorkbook.Sheets ('InputFile'). Κελιά (Rows.Count, 1). End (xlUp). Σειρά: Αυτή η δήλωση λαμβάνει το πλήθος των συνολικών σειρών.
# 4) ncol = ThisWorkbook.Sheets ('InputFile'). Κελιά (1, Στήλες. Αριθμός). Τέλος (xlToLeft). Στήλη: Αυτή η δήλωση λαμβάνει τον αριθμό των συνολικών στηλών.
# 5) i = 1: Αυτή η δήλωση αρχικοποιεί το i με 1.
# 6) j = 1: Αυτή η δήλωση αρχικοποιεί το j με 1.
# 7) Για i = 1 Για να περιοριστεί
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (i, 1) = ThisWorkbook.Sheets ('InputFile'). Κελιά (i, 1)
Επόμενο i: Αυτό το απόσπασμα του αντιγράφου For loop επικολλά την πρώτη τιμή στήλης (Αναγνωριστικό παραγγελίας σε αυτήν την περίπτωση) του φύλλου 'InputFile' σε κάθε σειρά του φύλλου 'ReadyTestCases' ως αναγνωριστικό δοκιμαστικής.
# 8) lastrow = Sheets ('InputFile'). Cells (Sheets ('InputFile'). Rows.Count, 'A'). End (xlUp). Σειρά: Αυτή η δήλωση υπολογίζει εκ νέου την τελευταία σειρά του InputFile.
# 9) AddRows = 21: Αυτή η δήλωση εκχωρεί 21 στη μεταβλητή AddRows. Αυτή η μεταβλητή έχει εκχωρηθεί 21 με σκοπό την εισαγωγή 21 επιπλέον κενών σειρών για κάθε δοκιμαστική θήκη για προσθήκη σταδίων δοκιμής.
# 10) i = Lastrow: Αυτή η δήλωση εκχωρεί το τελευταίο πλήθος τελευταίων σειρών στο i.
# 11) Κάνετε ενώ εγώ 1
Σειρές (i & ':' & i + AddRows - 1). Εισαγωγή
i = i - 1
Βρόχος: Αυτή η δήλωση προσθέτει 20 σειρές για κάθε δοκιμαστικό κουτί ξεκινώντας από κάτω προς τα πάνω.
# 12) lastrow = Φύλλα ('ReadyTestCases'). Κελιά (Φύλλα ('ReadyTestCases'). Rows.Count, 'A'). End (xlUp). Σειρά: Αυτή η δήλωση υπολογίζει εκ νέου τον τελευταίο συνολικό αριθμό σειρών.
# 13) ThisWorkbook.Sheets ('ReadyTestCases'). Θέτω εις ενέργειαν: Το δεύτερο φύλλο ενεργοποιείται μέσω αυτής της δήλωσης.
# 14) Μειώστε σε: Αυτή η δήλωση δηλώνει τη μεταβλητή a.
# 15) α = 1: Αυτή η δήλωση εκχωρεί 1 σε α.
# 16) Για ένα = 1 για το τελευταίο
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 2)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 1, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 3)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 2, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 4)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 3, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 5)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 4, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 6)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 5, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 7)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 6, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 8)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 7, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 9)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 8, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 10)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 9, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 11)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 10, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 12)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 11, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 13)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 12, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 14)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 13, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 15)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 14, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 16)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 15, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 17)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 16, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 18)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 17, 3) = ThisWorkbook.Sheets ('InputFile'). Κελιά (a, 19)
α = α + 21
Επόμενο α: Το απόσπασμα για βρόχο χαρτογραφεί τις τιμές από κάθε στήλη του φύλλου InputFile σε κάθε βήμα δοκιμής για κάθε αναγνωριστικό περίπτωσης δοκιμής.
# 17) lastrow = Sheets ('ReadyTestCases'). Cells (Sheets ('ReadyTestCases'). Rows.Count, 'C'). End (xlUp). Σειρά : Αυτή η δήλωση υπολογίζει εκ νέου το συνολικό φύλλο σειράς ReadyTestCases μετά την προσθήκη 21 σειρών για κάθε αναγνωριστικό περίπτωσης δοκιμής.
# 18) α = 1: Αυτή η δήλωση εκχωρεί 1 στη μεταβλητή a.
# 19) ThisWorkbook.Sheets ('ReadyTestCases'). Ενεργοποίηση: Αυτή η δήλωση ενεργοποιεί το φύλλο ReadyTestCases.
# 20) Για ένα = 1 για το τελευταίο
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a, 2) = 'Επαλήθευση ημερομηνίας παραγγελίας'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 1, 2) = 'Επαλήθευση ημερομηνίας αποστολής'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 2, 2) = 'Επαλήθευση λειτουργίας αποστολής'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 3, 2) = 'Επαλήθευση αναγνωριστικού πελάτη'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 4, 2) = 'Επαλήθευση ονόματος πελάτη'
ThisWorkbook.Sheets ('ReadyTestCases'). Κελιά (a + 5, 2) = 'Επαλήθευση τμήματος'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 6, 2) = 'Επαλήθευση πόλης'
ThisWorkbook.Sheets ('ReadyTestCases'). Κελιά (a + 7, 2) = 'Επαλήθευση κατάστασης'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 8, 2) = 'Επαλήθευση ταχυδρομικού κώδικα'
ThisWorkbook.Sheets ('ReadyTestCases'). Κελιά (a + 9, 2) = 'Επαλήθευση περιοχής'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 10, 2) = 'Επαλήθευση αναγνωριστικού προϊόντος'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 11, 2) = 'Επαλήθευση κατηγορίας'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 12, 2) = 'Επαλήθευση υποκατηγορίας'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 13, 2) = 'Επαλήθευση ονόματος προϊόντος'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 14, 2) = 'Επαλήθευση πωλήσεων'
ThisWorkbook.Sheets ('ReadyTestCases'). Κελιά (a + 15, 2) = 'Επαλήθευση ποσότητας'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 16, 2) = 'Επαλήθευση έκπτωσης'
ThisWorkbook.Sheets ('ReadyTestCases'). Κελιά (a + 17, 2) = 'Επαλήθευση κέρδους'
α = α + 21
Επόμενο α - Αυτό το απόσπασμα του For loop προσθέτει στατικά στάδια δοκιμής για κάθε περίπτωση δοκιμής.
# 21) Deleteblankrows ('ReadyTestCases'): Καλέστε τη συνάρτηση Deleteblankrow για το Έτοιμο φύλλο δοκιμών.
# 22) ScreenUpdating = True: Αυτό σας επιτρέπει να οπτικοποιήσετε τις ενημερώσεις οθόνης που πραγματοποιούνται ως μέρος της εκτέλεσης μακροεντολών.
# 23) Sub Deleteblankrows (φύλλο ByVal ως συμβολοσειρά): Ο παρακάτω κώδικας αφορά τη συνάρτηση Deletblankrows που θα ελέγχει δυναμικά αν υπάρχουν κενές τιμές στα πεδία δεδομένων. Εάν ναι, το βήμα δοκιμής που δημιουργήθηκε για τα κενά δεδομένα θα διαγραφεί με τη σειρά του διαγράφοντας τέτοιες σειρές.
# 24) Dim wks ως φύλλο εργασίας: Αυτή η δήλωση δηλώνει τη μεταβλητή wks ως φύλλο εργασίας.
# 25) Ορισμός wks = ThisWorkbook. Φύλλα εργασίας (φύλλο): Αυτή η δήλωση εκχωρεί το φύλλο wks που παρέχεται ως παράμετρος εισαγωγής.
# 26) Dim i As Long: Αυτή η επένδυση δηλώνει ως Long.
# 28) wks. Ενεργοποιήστε: Αυτή η δήλωση ενεργοποιεί το φύλλο.
# 29) lastrow = wks.Cells (Sheets (Sheet). Rows.Count, 'C'). End (xlUp). Σειρά: Αυτή η δήλωση λαμβάνει τον αριθμό της τελευταίας σειράς στο φύλλο.
# 30) Για i = 1 To Lastrow: Το For loop επαναλαμβάνεται από την πρώτη σειρά έως την τελευταία σειρά.
# 31) Εάν WorksheetFunction.CountBlank (Range (Cells (i, 2), Cells (i, 3))) = 1 Τότε: Αυτή η συνθήκη ελέγχει εάν για κάθε σειρά, η δεύτερη και η τρίτη στήλη υπολογίζονται στην κενή τιμή ως 1.
# 32) Επιλογή. Γραμμές (i). EntireRow. Διαγραφή: Αυτή η δήλωση διαγράφει την επιλεγμένη σειρά εάν η συνθήκη είναι αληθής.
Παράδειγμα χρήσης # 4
Οι τύποι του Excel στο πρότυπο Test Estimates μπορούν να εκτελεστούν και χρησιμοποιώντας μια μακροεντολή. Δημιουργείται επίσης ένα γράφημα χρησιμοποιώντας τη μακροεντολή.
Διαδήλωση
- Διατηρείται ένα φύλλο «Εκτιμήσεις» που θα επιτρέπει στους χρήστες να προσθέτουν εκτιμώμενες ώρες για τις φάσεις δοκιμών, ξεκινώντας από την κατανόηση των επιχειρηματικών απαιτήσεων έως τη δημιουργία, την εκτέλεση και την επανεξέταση της ενημέρωσης σεναρίων δοκιμής.
- Τα πράσινα επισημασμένα κελιά είναι ενεργοποιημένα για είσοδο χρήστη. Αυτά είναι τα πεδία εισαγωγής.
- Τα μπλε επισημασμένα προέρχονται αυτόματα.
- Το δεύτερο φύλλο περιλαμβάνει μετρήσεις εργασίας και το τρίτο φύλλο περιλαμβάνει μετρήσεις πολυπλοκότητας.
- Ο χρήστης εισάγει το μέγεθος της πολυπλοκότητας σε όρους H, L και M στη στήλη D και η στήλη E παίρνει αυτόματα τον παράγοντα πολυπλοκότητας χρησιμοποιώντας το vlookup από το 'Μετρήσεις πολυπλοκότητας' σεντόνι.
- Ο χρήστης εισάγει το μέγεθος επεξεργασίας σε όρους H, L και M στη στήλη F και η στήλη G παίρνει αυτόματα τον παράγοντα πολυπλοκότητας χρησιμοποιώντας το vlookup από το φύλλο 'Μετρήσεις εργασίας'.
- Στη συνέχεια, οι παράγοντες χρησιμοποιούνται στη στήλη Η για τη λήψη των συνολικών προσπαθειών για εκτίμηση.
- Μια άλλη μακροεντολή όταν εκτελείται προετοιμάζει το γράφημα και το προσθέτει στο τέταρτο φύλλο «Διάγραμμα».
- Οι τύποι που περιλαμβάνονται οδηγούνται μέσω της μακροεντολής χρησιμοποιώντας το πλήκτρο συντόμευσης CTRL + SHIFT + E.
Υπολογίζει
Μετρήσεις επανάληψης
Μετρήσεις πολυπλοκότητας
Διάγραμμα
Κωδικός VBA (Macro) για το φύλλο εκτιμήσεων
' Keyboard Shortcut: Ctrl+Shift+E ThisWorkbook.Sheets(1).Activate Sheets('Estimates').Cells(4, 8) = Sheets('Estimates').Cells(4, 2) * Sheets('Estimates').Cells(4, 3) * Sheets('Estimates').Cells(4, 5) * Sheets('Estimates').Cells(4, 7) Sheets('Estimates').Cells(5, 8) = Sheets('Estimates').Cells(5, 2) * Sheets('Estimates').Cells(5, 3) * Sheets('Estimates').Cells(5, 5) * Sheets('Estimates').Cells(5, 7) Sheets('Estimates').Cells(6, 8) = Sheets('Estimates').Cells(6, 2) * Sheets('Estimates').Cells(6, 3) * Sheets('Estimates').Cells(6, 5) * Sheets('Estimates').Cells(6, 7) Sheets('Estimates').Cells(7, 8) = Sheets('Estimates').Cells(7, 2) * Sheets('Estimates').Cells(7, 3) * Sheets('Estimates').Cells(7, 5) * Sheets('Estimates').Cells(7, 7) Sheets('Estimates').Cells(8, 8) = Sheets('Estimates').Cells(8, 2) * Sheets('Estimates').Cells(8, 3) * Sheets('Estimates').Cells(8, 5) * Sheets('Estimates').Cells(8, 7) Sheets('Estimates').Cells(9, 8) = Sheets('Estimates').Cells(9, 2) * Sheets('Estimates').Cells(9, 3) * Sheets('Estimates').Cells(9, 5) * Sheets('Estimates').Cells(9, 7) Sheets('Estimates').Cells(10, 8) = Sheets('Estimates').Cells(10, 2) * Sheets('Estimates').Cells(10, 3) * Sheets('Estimates').Cells(10, 5) * Sheets('Estimates').Cells(10, 7) Sheets('Estimates').Cells(11, 8) = Sheets('Estimates').Cells(4, 8) + Sheets('Estimates').Cells(5, 8) + Sheets('Estimates').Cells(6, 8) + Sheets('Estimates').Cells(7, 8) + Sheets('Estimates').Cells(8, 8) + Sheets('Estimates').Cells(9, 8) + Sheets('Estimates').Cells(10, 8) ‘--------------------------------------------------- For i = 3 To 10 Sheets('Chart').Cells(i - 2, 1) = Sheets('Estimates').Cells(i, 1) Sheets('Chart').Cells(i - 2, 2) = Sheets('Estimates').Cells(i, 8) Next i End Sub
Επεξήγηση του κώδικα
(a) ThisWorkbook. Φύλλα (1). Activeivat: Το πρώτο φύλλο «Εκτιμήσεις» ενεργοποιείται.
(β) Φύλλα ('Εκτιμήσεις'). Κελιά (4, 8) = Φύλλα ('Εκτιμήσεις'). Κελιά (4, 2) * Φύλλα ('Εκτιμήσεις'). Κελιά (4, 3) * Φύλλα ('Εκτιμήσεις') ). Κελιά (4, 5) * Φύλλα ('Εκτιμήσεις'). Κελιά (4, 7): Αυτή η δήλωση υπολογίζει τη στήλη B * στήλη C * στήλη E * στήλη G και αντιστοιχίζει στη στήλη H για τη σειρά 4.
(γ) Φύλλα ('Εκτιμήσεις'). Κελιά (5, 8) = Φύλλα ('Εκτιμήσεις'). Κελιά (5, 2) * Φύλλα ('Εκτιμήσεις'). Κελιά (5, 3) * Φύλλα ('Εκτιμήσεις') ). Κελιά (5, 5) * Φύλλα ('Εκτιμήσεις'). Κελιά (5, 7): Αυτή η δήλωση υπολογίζει τη στήλη B * στήλη C * στήλη E * στήλη G και αντιστοιχίζει στη στήλη H για τη σειρά 5.
(δ) Φύλλα ('Εκτιμήσεις'). Κελιά (6, 8) = Φύλλα ('Εκτιμήσεις'). Κελιά (6, 2) * Φύλλα ('Εκτιμήσεις'). Κελιά (6, 3) * Φύλλα ('Εκτιμήσεις') ). Κελιά (6, 5) * Φύλλα ('Εκτιμήσεις'). Κελιά (6, 7): Αυτή η δήλωση υπολογίζει τη στήλη B * στήλη C * στήλη E * στήλη G και αντιστοιχίζει στη στήλη H για τη σειρά 6.
(ε) Φύλλα ('Εκτιμήσεις'). Κελιά (7, 8) = Φύλλα ('Εκτιμήσεις'). Κελιά (7, 2) * Φύλλα ('Εκτιμήσεις'). Κελιά (7, 3) * Φύλλα ('Εκτιμήσεις') ). Κελιά (7, 5) * Φύλλα ('Εκτιμήσεις'). Κελιά (7, 7): Αυτή η δήλωση υπολογίζει τη στήλη B * στήλη C * στήλη E * στήλη G και αντιστοιχίζει στη στήλη H για τη σειρά 7.
(στ) Φύλλα ('Εκτιμήσεις'). Κελιά (8, 8) = Φύλλα ('Εκτιμήσεις'). Κελιά (8, 2) * Φύλλα ('Εκτιμήσεις'). Κελιά (8, 3) * Φύλλα ('Εκτιμήσεις') ). Κελιά (8, 5) * Φύλλα ('Εκτιμήσεις'). Κελιά (8, 7): Αυτή η δήλωση υπολογίζει τη στήλη B * στήλη C * στήλη E * στήλη G και αντιστοιχίζει στη στήλη H για τη σειρά 8.
(ζ) Φύλλα ('Εκτιμήσεις'). Κελιά (9, 8) = Φύλλα ('Εκτιμήσεις'). Κελιά (9, 2) * Φύλλα ('Εκτιμήσεις'). Κελιά (9, 3) * Φύλλα ('Εκτιμήσεις') ). Κελιά (9, 5) * Φύλλα ('Εκτιμήσεις'). Κελιά (9, 7): Αυτή η δήλωση υπολογίζει τη στήλη B * στήλη C * στήλη E * στήλη G και αντιστοιχίζει στη στήλη H για τη σειρά 9.
(h) Φύλλα ('Εκτιμήσεις'). Κελιά (10, 8) = Φύλλα ('Εκτιμήσεις'). Κελιά (10, 2) * Φύλλα ('Εκτιμήσεις'). Κελιά (10, 3) * Φύλλα ('Εκτιμήσεις') ). Κελιά (10, 5) * Φύλλα ('Εκτιμήσεις'). Κελιά (10, 7): Αυτή η δήλωση υπολογίζει τη στήλη B * στήλη C * στήλη E * στήλη G και αντιστοιχίζει στη στήλη H για τη σειρά 10.
(i) Φύλλα ('Εκτιμήσεις'). Κελιά (11, 8) = Φύλλα ('Εκτιμήσεις'). Κελιά (4, 8) + Φύλλα ('Εκτιμήσεις'). Κελιά (5, 8) + Φύλλα ('Εκτιμήσεις') ). Κελιά (6, 8) + Φύλλα ('Εκτιμήσεις'). Κελιά (7, 8) + Φύλλα ('Εκτιμήσεις'). Κελιά (8, 8) + Φύλλα ('Εκτιμήσεις'). Κελιά (9, 8) + Φύλλα ('Εκτιμήσεις'). Κελιά (10, 8): Αυτή η δήλωση συνοψίζει το κελί H2 έως H10 και εκχωρεί την τελική τιμή στο H11. Αυτή η τιμή παρέχει συνολική προσπάθεια (σε ώρες).
(j) Για i = 3 έως 10
Φύλλα ('Διάγραμμα'). Κελιά (i - 2, 1) = Φύλλα ('Εκτιμήσεις'). Κελιά (i, 1)
Φύλλα ('Διάγραμμα'). Κελιά (i - 2, 2) = Φύλλα ('Εκτιμήσεις'). Κελιά (i, 8)
Επόμενο Ι: Αυτό το αντίγραφο For Loop επικολλά δεδομένα από τη στήλη 1 και τη στήλη 8 του φύλλου εκτιμήσεων στο φύλλο γραφήματος. Αυτό γίνεται έτσι ώστε τα δεδομένα από το φύλλο γραφήματος να μπορούν να χρησιμοποιηθούν για την προετοιμασία ενός γραφήματος πίτας. Υπάρχει μια άλλη μακροεντολή γραμμένη για το φύλλο 'Διάγραμμα' που προετοιμάζει ένα γράφημα για το ίδιο.
Κωδικός VBA (Macro) για φύλλα γραφημάτων
Sub CreateChart() Dim rng As Range Dim cht As Object ThisWorkbook.Sheets('Chart').Activate Set rng = ActiveSheet.Range('A2:B8') Set est = ThisWorkbook.Sheets('Chart').Shapes.AddChart2 est.Chart.SetSourceData Source:=rng est.Chart.ChartType = xl3DPieExploded est.Chart.HasTitle = True est.Chart.ChartTitle.Text = 'Test Estimates' est.Chart.SetElement (msoElementDataLabelCenter) est.Chart.SetElement (msoElementLegendBottom) End Sub
Επεξήγηση του κώδικα
- Dim rng ως εύρος: Αυτή η δήλωση δηλώνει rng ως τιμή εύρους.
- Το Dim is As Object: Αυτή η δήλωση δηλώνει est ως τιμή αντικειμένου.
- Αυτό το βιβλίο εργασίας. Φύλλα ('Διάγραμμα'). Ενεργοποίηση: Αυτή η δήλωση ενεργοποιεί το φύλλο γραφήματος.
- Ορισμός rng = ActiveSheet.Range ('A2: B8'): Το εύρος από A2 έως B8 του φύλλου-γραφήματος ορίζεται σε rng.
- Ορισμός est = ThisWorkbook.Sheets ('Chart'). Shapes.AddChart2: Αυτή η δήλωση χρησιμοποιείται για να ξεκινήσει η δημιουργία ενός νέου γραφήματος στο φύλλο-διάγραμμα.
- est.Chart.SetSourceData Source:=rng: Αυτή η δήλωση παρέχει ένα εύρος δεδομένων για στοχασμό στο γράφημα.
- est.Chart.ChartType = xl3DPieExploded: Ο τύπος γραφήματος έχει οριστεί σε τρισδιάστατη πίτα εκρηκτικού τύπου. Το xl3DPieExploded βοηθά στον προσδιορισμό αυτού του τύπου γραφήματος.
- est.Chart.HasTitle = True: Αυτή η δήλωση επαληθεύει εάν το γράφημα έχει ήδη έναν τίτλο.
- est.Chart.ChartTitle.Text = 'Εκτιμήσεις δοκιμής': Αυτή η δήλωση αντικαθιστά τον τίτλο του γραφήματος σε «Δοκιμές εκτιμήσεις».
- est.Chart.SetElement (msoElementDataLabelCenter): Αυτή η δήλωση ορίζει τις ετικέτες δεδομένων και τους θρύλους για το γράφημα.
- est.Chart.SetElement (msoElementLegendBottom): Αυτή η δήλωση ορίζει τις ετικέτες δεδομένων στο κάτω μέρος του γραφήματος.
Τρόποι εκτέλεσης μιας μακροεντολής
Μια μακροεντολή θα μπορούσε να εκτελεστεί χρησιμοποιώντας 4 τρόπους:
- Χρήση του εικονιδίου Εκτέλεση στο παράθυρο του προγράμματος επεξεργασίας VBA.
- Στο αρχείο Excel, ορίστε την επιλογή μενού Προβολή -> Μακροεντολές -> Προβολή μακροεντολής -> Επιλέξτε το όνομα της μακροεντολής και επιλέξτε Εκτέλεση.
- Δημιουργήστε μια συντόμευση κατά τη δημιουργία της μακροεντολής και πατώντας τα πλήκτρα συντόμευσης θα ενεργοποιηθεί η εκτέλεση της μακροεντολής.
- Ο πιο φιλικός προς τον χρήστη τρόπος είναι να δημιουργήσετε ένα κουμπί δράσης ( Π.χ. Κουμπί εντολής) στο οποίο θα εκχωρηθεί μια μακροεντολή η οποία όταν πατηθεί θα ενεργοποιήσει την εκτέλεση της μακροεντολής.
Θα δούμε πώς να προσθέσουμε ένα κουμπί εντολής και να αντιστοιχίσουμε μια μακροεντολή στο κουμπί. Το κουμπί όταν κάνετε κλικ θα εκτελέσει την εκτέλεση της μακροεντολής.
Προσθήκη κουμπιού ελέγχου φορμών στο Excel
- Επιλέγω Μενού «Προγραμματιστής» -> Εισαγωγή -> Έλεγχοι φόρμας -> Επιλογή εικονιδίου κουμπιού και προσθέστε το κουμπί στο φύλλο Excel.
- Εισαγάγετε το όνομα και την τιμή κειμένου για το κουμπί. Το όνομα του κουμπιού χρησιμοποιείται στην κωδικοποίηση VBA για την αναγνώριση αυτού του κουμπιού εντολής, ενώ το κείμενο είναι αυτό που εμφανίζεται στο κουμπί.
- Τώρα κάντε δεξί κλικ στο κουμπί εντολής και ορίστε την επιλογή 'Εκχώρηση μακροεντολής' , εμφανίζεται η λίστα των μακροεντολών, επιλέξτε το όνομα της μακροεντολής που θέλετε να εκχωρήσετε.
- Μόλις εκχωρηθεί η μακροεντολή, κάνοντας κλικ στο κουμπί ενεργοποιεί την εκτέλεση της εκχωρημένης μακροεντολής.
- Σε αυτό το παράδειγμα, το 'Λήψη εκτιμήσεων δοκιμής' το κουμπί έχει αντιστοιχιστεί σε 'Υπολογίζει' μακροεντολή.
- Ομοίως, θα προσθέσουμε ένα κουμπί εντολής για το φύλλο γραφήματος και θα αντιστοιχίσουμε τη μακροεντολή για το γράφημα για να ενεργοποιήσει τη δημιουργία του γραφήματος.
- Κάνοντας κλικ στο «Δημιουργία γραφήματος» Το κουμπί εκτελεί τη μακροεντολή για το Διάγραμμα. Αυτό βελτιώνει τη χρηστικότητα της μακροεντολής.
συμπέρασμα
Αυτά ήταν μερικά παραδείγματα σε πραγματικό χρόνο που θα μπορούσαν να αποτελέσουν μέρος της καθημερινής ρουτίνας του ελεγκτή στην εργασία που θα μπορούσε να αναγνωριστεί έξυπνα για τη δημιουργία μακροεντολών και, επομένως, να εξοικονομήσει άφθονο χρόνο σε άσχετες και επαναλαμβανόμενες μη αυτόματες προσπάθειες αυτοματοποιώντας την εργασία.
Τα σχετικά στιγμιότυπα οθόνης, ο κώδικας VBA και η λεπτομερής κατανόηση κάθε γραμμής κώδικα καλύπτονται σε αυτό το άρθρο. Ελπίζω, αυτό θα δώσει ένα καλό ξεκίνημα για τα QA σχετικά με τον τρόπο μεταμόρφωσης από μια χειροκίνητη δοκιμαστική νοοτροπία σε μια μακροεντολή νοοτροπίας.
Για τα άτομα που πιστεύουν ότι η χειροκίνητη δοκιμαστική εργασία είναι καθαρά μη τεχνική εργασία, ας τους αποδείξουμε λάθος μέσω της απαιτούμενης εφαρμογής τεχνικών γνώσεων για τη βελτίωση της παραγωγικότητας.
Συντάκτης: Αυτή η σε βάθος χρήσιμη ανάρτηση γράφτηκε από την Shobha D. Εργάζεται ως επικεφαλής έργου και έχει 9+ χρόνια εμπειρίας σε δοκιμές Manual, Automation (IBM RFT και Selenium χρησιμοποιώντας Java) και API.
Συνιστώμενη ανάγνωση
- Εργασία με αντικείμενα VBScript Excel
- Δημιουργία Selenium Framework και Πρόσβαση σε δεδομένα δοκιμών από το Excel - Selenium Tutorial # 21
- 5 Πιο κοινές εργασίες δοκιμών Ξεχάστε να δοκιμάσετε οι δοκιμαστές (και πώς να το αποφύγετε)
- Κορυφαία 5 πράγματα που πρέπει να έχει ένας δοκιμαστής στο Excel (Και οι προοπτικές αλλαγής λογισμικού του ελεγκτή)
- Υπο-εργασία JIRA με Παράδειγμα (JIRA Δημιουργία δευτερεύουσας εργασίας)