how automate repetitive qa tasks using excel macros
In diesem ausführlichen Handbuch zur QA-Makro-Denkweise wird erläutert, wie sich wiederholende QA-Aufgaben mithilfe von Excel-Makros mit Beispielen und Screenshots von Excel-Tabellen automatisiert werden:
Der Automatisierungsbedarf in der heutigen Welt ist eine der wesentlichen und wachsenden Anforderungen. Heute sucht jeder etwas, das seine Arbeit oder die mit der Routinearbeit verbundenen Probleme erleichtert.
Heutzutage möchte niemand ein mobiles Geschäft besuchen, in Warteschlangen stehen, um sein Telefon aufzuladen. Es ist praktisch, nirgendwo physisch zu besuchen, sondern das Telefon innerhalb von Sekundenbruchteilen online aufzuladen.
Angefangen von der Bezahlung Ihrer Stromrechnungen über Net Banking, der Online-Buchung und Verfolgung Ihres Taxis über den Online-Kauf auf verschiedenen E-Commerce-Websites bis hin zur Verwendung verschiedener automatisierter Geräte wie Waschmaschinen, Mikrowellen, Geysire und sich ständig weiterentwickelnder Smartphones usw. ist die heutige Welt wirklich Verlangen nach intelligenten und automatisierten Produkten in Form von Diensten oder Geräten.
In diesem Artikel werden wir nicht die Verwendung eines Automatisierungstools oder irgendetwas über künstliche Intelligenz oder maschinelles Lernen diskutieren, aber der Fokus soll auf der bloßen Verwendung von Excel zur Automatisierung der täglichen Routineaufgaben einer Qualitätssicherung liegen.
Was du lernen wirst:
QA's Macro Mindset
Manuelle Tester denken normalerweise, dass ich als manueller Tester nichts mit irgendetwas Technischem zu tun habe oder mit anderen Worten: „Codierungs-Know-how ist nicht meine Sache“. Dies ist wahrscheinlich die falsche Einstellung, die unser Wachstum als Ingenieure stoppen könnte.
Eine manuelle Qualitätssicherung hat viele tägliche Aufgaben, die sich nach demselben Workflow wiederholen können. Eine Qualitätssicherung kann solche Aufgaben sehr gut identifizieren und automatisieren lassen Verwenden von Excel-Makros und / oder Formeln.
Dies könnte auf zwei Arten helfen:
- Reduziert den Zeitaufwand für manuelle Anstrengungen.
- Inspiriert auch die Qualitätssicherung, zu lernen und sich an logisches Denken und technische Weiterbildung anzupassen.
Die Dinge können für alle unten aufgeführten Testphasen automatisiert werden:
- Testplanung und Schätzung.
- Testdesign oder Testfallvorbereitung.
- Aktualisierung des Testausführungsstatus.
- Testbericht und Erstellung von Metriken.
Schnelle Kontexteinstellung
# 1) Ein Excel gespeichert mit. Die Erweiterung xlsxm ist ein makrofähiges Excel.
#zwei) Um das Makro in einem Excel zu aktivieren, wählen Sie Datei -> Optionen -> Trust Center -> Trust Center-Einstellungen -> Makroeinstellungen -> Wählen Sie das Optionsfeld 'Alle Makros aktivieren'. und aktivieren Sie das Kontrollkästchen 'Zugriff auf das VBA-Projektobjektmodell vertrauen'. OK klicken.
#3) Wählen Sie das Menü Ansicht -> Makros -> Makros aufzeichnen -> Einige Aktivitäten ausführen und Makros stoppen . Sie können das Makro bearbeiten und den im VBA-Editor Fenster. Ebenso können Sie Ihre Codes explizit hinzufügen, um ein Makro zu erstellen.
# 4) Wir werden uns einige Beispiele für solche sich wiederholenden Aufgaben ansehen, die gute Kandidaten für die Automatisierung über Excel-Makros / -Formeln sein könnten.
Beispiel Verwendung # 1
Am Ende jeder Funktionsphase müssen einige Testfälle für die Regression aus der Funktionssuite identifiziert werden. Dies ist ein Prozess, der bei jedem Sprint oder jeder Iteration befolgt werden muss.
Lösung
Um den Aufwand für die Identifizierung und manuelle Erstellung einer Regressionssuite zu verringern, kann der folgende innovative Prozess implementiert werden.
- Sie können ein Blatt mit Funktionstestfällen mit einer zusätzlichen Spalte zum Markieren der Testfälle / Szenarien als Ja / Nein für die Regression erstellen.
- Erstellen Sie dann ein Makro für dasselbe, sodass beim Ausführen des Makros alle Testfälle / Szenarien mit der als 'Ja' gekennzeichneten Regression auf ein anderes Blatt kopiert werden.
- Auf diese Weise wird eine zusätzliche Übung vermieden, bei der alle Funktionstestfälle am Ende des Sprints durchlaufen und zusätzliche Anstrengungen unternommen werden, um jeden Testfall in die Regressionssuite zu extrahieren.
Demo
- Das erste Blatt „FunctionalTestScenarios“ enthält alle Funktionstestszenarien / Testfälle.
- Es gibt eine zusätzliche Spalte 'In Regressionssuite aufnehmen?' am Ende der Testspalten hinzugefügt, um 'Ja' oder 'Nein' zu markieren, indem angegeben wird, ob jedes der Testszenarien in die Regressionssuite aufgenommen werden muss.
- Es wird ein zweites Blatt erstellt als 'RegressionSuite' Dadurch werden automatisch alle Regressionstestszenarien über das Makro abgerufen.
- STRG + UMSCHALT + S wird als Verknüpfung für die Ausführung des Makros festgelegt.
FunctionalTestScenarios
RegressionSuite
VBA-Code (Makro)
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
Erklärung des Codes
- Blätter ('FunctionalTestScenarios'). Aktivieren Sie: Wenn in Excel mehrere Blätter vorhanden sind, aktiviert die Aktivierungsmethode das erste Blatt, und daher wird der Fokus explizit auf das erste Blatt gesetzt.
- Zeilen ('1: 1'). Wählen Sie: Diese Anweisung wählt die erste Zeile für alle Spalten des ersten Blattes aus.
- Selection.AutoFilter: Diese Anweisung wendet den Filter auf die ausgewählte erste Zeile an.
- Sheet1.Range ('$ A $ 1: $ D $ 38'). AutoFilter-Feld: = 4, Kriterien1: = 'Ja': Diese Anweisung wendet den automatischen Filter auf Spalte 4 an, d.h. 'In Regressionssuite aufnehmen?' und filtert die Datensätze nach dem Wert 'Ja' heraus.
- Lastrow = Sheets ('FunctionalTestScenarios'). Cells (Sheets ('FunctionalTestScenarios') .Rows.Count, 'A'). End (xlUp) .Row: Diese Anweisung erhält die letzte Zeilenanzahl des ersten Blattes.
- Bereich ('A2: C2' & Lastrow). Wählen Sie: Diese Anweisung wählt alle Zeilen und Spalten des ersten Blatts mit Include in Regression Suite? = Yes aus.
- Auswahl.Kopie: Diese Anweisung kopiert alle ausgewählten Datensätze.
- Blätter ('RegressionSuite'). Wählen Sie: Diese Aussage öffnet die 2ndBlatt.
- Bereich („A2“). Wählen Sie: Diese Anweisung wählt Zelle A2 der 2 ausndBlatt.
- Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transponieren: = False: Diese Anweisung kopiert den von der Quelle ausgewählten Zellenwert in das Zielblatt. Der Zielzellenbereich enthält nur die berechneten Werte unter Verwendung der Formeln. Alternativ kann auch Paste: = xlValues verwendet werden. Es werden keine Leerzeichen übersprungen. Die Quellzellen werden nicht transponiert und es werden keine mathematischen Operationen durchgeführt.
Beispiel Verwendung # 2
Es gibt Zeiten, in denen Testfälle für beispielsweise 100 Bundesstaaten oder 1000 Unternehmen erstellt werden müssen (z. B. 1000 Versicherungsformulare). Die Testschritte für diese riesige Liste von Zuständen oder Entitäten können gleich und sich wiederholend sein.
Trotzdem kann die Vorbereitung von Testfällen eine der zeitaufwändigsten Aktivitäten sein. Daher ist es sehr wichtig, dass das Testfalldokument vorhanden ist, um die erforderlichen Schätzungen vom Kunden einzukaufen und das QA-Team jeden der darin enthaltenen Testfälle testen zu lassen die korrekt geschätzten Zeitpläne.
Lösung
In solchen Fällen können lange Stunden der Vorbereitung von Testfällen mithilfe des Makros auf einen Bruchteil von Sekunden reduziert werden.
- Sie können ein Blatt erstellen, in dem Sie die Eingabe lediglich als Testfall-ID und als eindeutige Liste der Entitäten angeben.
- Erstellen Sie ein Makro, das bei der Ausführung sich wiederholende Zeilen von Testschritten für jede dieser Entitäten hinzufügt und das Testfalldokument in wenigen Sekunden fertig ist, ohne den erheblichen manuellen Aufwand für die Vorbereitung der Testfälle aufwenden zu müssen.
Demo
- Das erste Blatt 'GetTestcasesASAP' ist das einzige makrogesteuerte Blatt, das anfangs leer ist.
- Noch ein Blatt ‘Beispiel-Eingabedaten’ spielt im Makro keine Rolle. Es enthält lediglich die Beispiel-Eingabedaten für Demo-Zwecke.
- Kopieren Sie die Daten aus dem Dateneingabedatenbereich A2 bis B12 in das erste Blatt.
- Sie können die Eingabedaten im Format - Spalte A = …… kopieren und einfügen. und Spalte B =.
- Sobald die Eingabedaten bereit sind, drücken Sie STRG + UMSCHALT + T als Tastenkombination für die Ausführung des Makros.
- Für jede Testfall-ID werden automatisch Testschritte hinzugefügt, und das Testfalldokument wird in wenigen Sekunden erstellt.
GetTestcasesASAP
Beispiel für Eingabedaten
Eingabedaten werden in das erste Blatt eingefügt.
Bild während der Makroausführung durch Drücken von STRG + UMSCHALT + T.
VBA-Code (Makro)
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
Erklärung des Codes
(a) Blätter ('GetTestcasesASAP'). Aktivieren: Diese Anweisung aktiviert das erste Blatt.
Protokoll und Port des sicheren Dateiübertragungssystems
(b) lastrow = Sheets ('GetTestcasesASAP'). Cells (Sheets ('GetTestcasesASAP'). Rows.Count, 'A'). End (xlUp) .Row: Diese Anweisung erhält die letzte Zeilenanzahl. Dieses Mal wird die Gesamtzahl der Zeilen für die anfänglichen Testfall-IDs abgerufen, die gerade als Teil der Eingabedaten vor der Ausführung des Makros hinzugefügt wurden.
(c) AddRows als Ganzzahl dimmen: Diese Anweisung deklariert die Variable AddRows als ganzzahligen Datentyp.
(d) AddRows = 5: Diese Anweisung initialisiert AddRows mit 5. Mit der Variablen werden nach jeder Testfall-ID einige Zeilen eingefügt, sodass für jeden Testfall statische Testschritte hinzugefügt werden können.
(e) Dim i As Integer: Diese Anweisung deklariert die Variable i als Ganzzahl.
(f) i = lastrow : Diese Anweisung weist der Variablen i die anfängliche Anzahl der letzten Zeilen zu.
(g) Do While i 1 : Diese do while-Schleife fügt nach jeder Testfall-ID 6 leere Zeilen ein. Die Schleife beginnt von der letzten Testfall-ID bis zur ersten Testfall-ID.
Zeilen (i & “:” & i + AddRows). Einfügen
i = i - 1
Schleife
(h) ScreenUpdating = True : Diese Anweisung macht jede Bildschirmaktualisierung sichtbar. Daher kann die Leistung des Makros etwas langsam sein. Um die Leistung des Makros zu optimieren, können Sie auch festlegen ScreenUpdating = False .
Wenn Sie ScreenUpdating auf False setzen, wird die Makroleistung verbessert und die Ausführung beschleunigt. Sie können jedoch die zeitweiligen Änderungen, die während der Ausführung des Makros auftreten, nicht sehen. Stattdessen werden die Änderungen erst angezeigt, wenn die Ausführung des Makros abgeschlossen ist.
(i) lastrow = Sheets ('GetTestcasesASAP'). Cells (Sheets ('GetTestcasesASAP'). Rows.Count, 'A'). End (xlUp) .Row : Diese Anweisung berechnet die Anzahl der letzten Zeilen erneut, nachdem für jeden Testfall neue 6 Zeilen hinzugefügt wurden.
(j) i = 2
(k) Während ich<= lastrow + 6
Blätter ('GetTestcasesASAP'). Zellen (i, 3) = 'Raten-Faktor-Kombinationen validieren'
Sheets ('GetTestcasesASAP'). Cells (i + 1, 3) = 'Batch-Job-Zeitpläne und -Läufe. „
Blätter ('GetTestcasesASAP'). Zellen (i + 2, 3) = 'Abrechnungen für Inbetriebnahmeberechnungen'
Blätter ('GetTestcasesASAP'). Zellen (i + 3, 3) = 'Schnelles und detailliertes Angebot'
Blätter ('GetTestcasesASAP'). Zellen (i + 4, 3) = 'Nutzenillustration'
Blätter ('GetTestcasesASAP'). Zellen (i + 5, 3) = 'Validierung der Nutzenzusammenfassung'
i = i + 7
Anwenden
Dieses Snippet der while-Schleife fügt 6 Schritte statischer Testschritte für jeden Testfall hinzu, indem diese Zeilen anschließend nach jeder Testfall-ID festgelegt werden.
Die für jeden Testfall hinzugefügten statischen Testschritte lauten wie folgt:
- Schritt 1: Validieren Sie Raten-Faktor-Kombinationen.
- Schritt 2: Batch-Job-Zeitpläne und -Läufe.
- Schritt 3: Abrechnungen für Inbetriebnahmeberechnungen.
- Schritt 4: Schnelles und detailliertes Angebot.
- Schritt 5: Nutzen Illustration.
- Schritt 6: Validierung der Leistungsübersicht.
Außerdem drückt es auch die nächste Testfall-ID in der Sequenz auf 6 + 2, d. H. 8thReihe.
Z.B: Befindet sich TC1 in der ersten Zeile, werden die Schritte von der zweiten zur siebten Zeile hinzugefügt und TC2 in die achte Zeile verschoben. Ähnliches gilt auch für die übrigen Testfall-IDs.
Beispiel Verwendung # 3
Es gibt Fälle, in denen der Client eine riesige Datendatei mit fast 1000 Datensätzen oder mehr bereitstellt. Das Schreiben von Testfällen für diese umfangreichen Datensätze und das Zuordnen aller Daten zu jedem Testschritt ist eine mühsame Aufgabe. Das Makro kann die Arbeitstage auf einige Minuten reduzieren, wodurch die Vorbereitungszeit für den Testfall gespart wird.
Lösung
Die vom Client bereitgestellte Datendatei kann auf das makrofähige Blatt kopiert werden. Beim Ausführen des Makros werden die Testfälle im zweiten Blatt automatisch erstellt, indem die Testdaten automatisch jedem Testschritt für jeden Testfall zugeordnet werden.
Demo
- Das erste Blatt 'Eingabedatei' und das zweite Blatt 'ReadyTestCases' sind die Hauptverantwortlichen im Makro.
- Ein anderes Blatt 'Sample -InputFile' spielt im Makro keine Rolle. Es enthält lediglich die Beispiel-Eingabedatendatei für Demozwecke.
- Sobald die Daten von ‘Sample-InputFile’ oder vom Kunden bereitgestellte Datendatei wird in das erste Blatt kopiert, d. h. 'InputFile',
- Führen Sie das Makro aus, und die Testfälle werden automatisch für jeden Testfall erstellt, in dem die Auftrags-IDs als Testfall-IDs festgelegt sind ( Hinweis: Denken Sie daran, den eindeutigen Bezeichner als erste Spalte in die Eingabedatei einzufügen.
- Ab sofort haben wir keine Tastenkombination für den Makrolauf festgelegt, sondern müssen sie über die Ausführungsoption auf dem ausführen Ansicht -> Makros -> Wählen Sie das Makro -> Bearbeiten -> VBA-Fenster.
- Der Makrocode behandelt die Addition der Testschritte dynamisch. Am Ende wird überprüft, ob einer der Feldwerte leer ist. Wenn ja, wird der Testschritt genauso gelöscht, wie der Schritt für ein leeres Feld nicht erforderlich wäre. Zum Beispiel, Wenn Sie sich die Eingabedatei unten ansehen, wird die 2ndDatensatz hat keinen Wert für Versanddatum und die dritte Zeile hat keinen Wert für Region. Daher haben die Testfälle, die automatisch erstellt werden, nach der Makroausführung keine Testschritte, die diesen leeren Werten entsprechen.
Sample-InputFile
Eingabedatei: Nach dem Kopieren Einfügen von Daten aus der Beispiel-Eingabedatei in die Eingabedatei
Hinweis:
- Fügen Sie die Spaltenüberschrift nicht aus dem Blatt 'Sample-InputFile' ein.
- Die gelb hervorgehobenen Felder sind leer, daher sollten die diesen leeren Werten entsprechenden Testschritte nicht über das Makro erstellt werden.
Bild des ReadyTestcases-Blattes nach dem Makrolauf.
VBA-Code (Makro)
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
Erklärung des Codes
# 1) ScreenUpdating = False: Bildschirmaktualisierungen werden nicht angezeigt, wenn ScreenUpdating auf False gesetzt wird.
# 2) ThisWorkbook.Sheets ('InputFile'). Aktivieren: Diese Anweisung aktiviert das Blatt 'InputFile'.
# 3) nrow = ThisWorkbook.Sheets ('InputFile'). Cells (Rows.Count, 1) .End (xlUp) .Row: Diese Anweisung erhält die Anzahl der gesamten Zeilen.
# 4) ncol = ThisWorkbook.Sheets ('InputFile'). Cells (1, Columns.Count) .End (xlToLeft) .Column: Diese Anweisung gibt die Anzahl der gesamten Spalten an.
# 5) i = 1: Diese Anweisung initialisiert i mit 1.
# 6) j = 1: Diese Anweisung initialisiert j mit 1.
# 7) Für i = 1 bis nrow
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (i, 1) = ThisWorkbook.Sheets ('InputFile'). Cells (i, 1)
Weiter i: Dieser Ausschnitt aus der For-Schleifenkopie fügt den ersten Spaltenwert (in diesem Fall die Bestell-ID) des Blattes 'InputFile' als Testfall-ID in jede Zeile des Blattes 'ReadyTestCases' ein.
# 8) lastrow = Sheets ('InputFile'). Cells (Sheets ('InputFile'). Rows.Count, 'A'). End (xlUp) .Row: Diese Anweisung berechnet die letzte Zeilenanzahl der Eingabedatei neu.
# 9) AddRows = 21: Diese Anweisung weist der AddRows-Variablen 21 zu. Dieser Variablen wurde 21 zugewiesen, mit der Absicht, 21 zusätzliche leere Zeilen für jeden Testfall einzufügen, um Testschritte hinzuzufügen.
# 10) i = lastrow: Diese Anweisung weist i die letzte letzte Zeilenanzahl zu.
# 11) Mach während ich 1
Zeilen (i & “:” & i + AddRows - 1). Einfügen
i = i - 1
Schleife: Diese Anweisung fügt 20 Zeilen für jeden Testfall hinzu, beginnend von unten nach oben.
# 12) lastrow = Sheets ('ReadyTestCases'). Zellen (Blätter ('ReadyTestCases'). Rows.Count, 'A'). End (xlUp) .Row: Diese Anweisung berechnet die letzte Gesamtzahl der Zeilen neu.
# 13) ThisWorkbook.Sheets ('ReadyTestCases'). Aktivieren Sie: Das zweite Blatt wird durch diese Anweisung aktiviert.
# 14) Dim to: Diese Anweisung deklariert die Variable a.
# 15) a = 1: Diese Anweisung weist a 1 zu.
# 16) Für a = 1 To lastrow
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 2)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 1, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 3)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 2, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 4)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 3, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 5)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 4, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 6)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 5, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 7)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 6, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 8)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 7, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 9)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 8, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 10)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 9, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 11)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 10, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 12)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 11, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 13)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 12, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 14)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 13, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 15)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 14, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 16)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 15, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 17)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 16, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 18)
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 17, 3) = ThisWorkbook.Sheets ('InputFile'). Zellen (a, 19)
a = a + 21
Weiter a: Das Snippet der for-Schleife ordnet die Werte aus jeder Spalte des InputFile-Blattes den einzelnen Testschritten für jede Testfall-ID zu.
# 17) lastrow = Sheets ('ReadyTestCases'). Cells (Sheets ('ReadyTestCases'). Rows.Count, 'C'). End (xlUp) .Row : Diese Anweisung berechnet die Gesamtanzahl der Zeilen neu. ReadyTestCases-Blatt nach Hinzufügen von 21 Zeilen für jede Testfall-ID.
# 18) a = 1: Diese Anweisung weist der Variablen a 1 zu.
# 19) ThisWorkbook.Sheets ('ReadyTestCases'). Aktivieren: Diese Anweisung aktiviert das ReadyTestCases-Blatt.
# 20) Für a = 1 To lastrow
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a, 2) = 'Bestelldatum überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 1, 2) = 'Versanddatum überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 2, 2) = 'Schiffsmodus überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 3, 2) = 'Kunden-ID überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 4, 2) = 'Kundennamen überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 5, 2) = 'Segment überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 6, 2) = 'Stadt überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 7, 2) = 'Status überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 8, 2) = 'Postleitzahl überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 9, 2) = 'Region überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 10, 2) = 'Produkt-ID überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 11, 2) = 'Kategorie überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 12, 2) = 'Unterkategorie überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 13, 2) = 'Produktnamen überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 14, 2) = 'Verify Sales'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 15, 2) = 'Menge überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Zellen (a + 16, 2) = 'Rabatt überprüfen'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 17, 2) = 'Verify Profit'
a = a + 21
Weiter a - Dieses Snippet der For-Schleife fügt statische Testschritte für jeden Testfall hinzu.
# 21) Deleteblankrows ('ReadyTestCases'): Rufen Sie die Funktion Deleteblankrow für das Blatt 'Ready TestCases' auf.
# 22) ScreenUpdating = True: Auf diese Weise können Sie die Bildschirmaktualisierungen visualisieren, die im Rahmen der Makroausführung stattfinden.
# 23) Sub Deleteblankrows (ByVal Sheet As String): Der folgende Code bezieht sich auf die Funktion Deletblankrows, die dynamisch prüft, ob in den Datenfeldern leere Werte vorhanden sind. Wenn ja, wird der für die leeren Daten erstellte Testschritt durch Löschen solcher Zeilen gelöscht.
# 24) Dim wks As Worksheet: Diese Anweisung deklariert die Variable wks als Arbeitsblatt.
# 25) Setze wks = ThisWorkbook.Worksheets (Sheet): Diese Anweisung weist das als Eingabeparameter bereitgestellte Arbeitsblatt zu.
# 26) Dim i As Long: Dieser Liner erklärt mich als lang.
# 28) wks.Activate: Diese Anweisung aktiviert das Blatt.
# 29) lastrow = wks.Cells (Sheets (Sheet) .Rows.Count, 'C'). End (xlUp) .Row: Diese Anweisung gibt die Anzahl der letzten Zeilen auf dem Blatt an.
# 30) Für i = 1 Zum letzten Mal: Die For-Schleife iteriert von der ersten bis zur letzten Zeile.
# 31) Wenn WorksheetFunction.CountBlank (Bereich (Zellen (i, 2), Zellen (i, 3))) = 1 Dann: Diese Bedingung prüft, ob für jede Zeile die zweite und dritte Spalte bis zum Leerwert 1 zählt.
# 32) Selection.Rows (i) .EntireRow.Delete: Diese Anweisung löscht die ausgewählte Zeile, wenn die Bedingung erfüllt ist.
Beispiel Verwendung # 4
Die Excel-Formeln in der Vorlage Test Estimates können auch mit einem Makro ausgeführt werden. Mit dem Makro wird auch ein Diagramm erstellt.
Demo
- Ein Blatt „Schätzungen“, mit dem Benutzer geschätzte Stunden für Testphasen hinzufügen können, angefangen beim Verständnis der Geschäftsanforderungen bis hin zum Erstellen, Ausführen und Überarbeiten von Aktualisierungsskripten.
- Die grün hervorgehobenen Zellen sind für die Benutzereingabe aktiviert. Dies sind die Eingabefelder.
- Die blau hervorgehobenen werden automatisch abgeleitet.
- Das zweite Blatt enthält Nacharbeitsmetriken und das dritte Blatt enthält Komplexitätsmetriken.
- Der Benutzer gibt die Komplexitätsgröße in Form von H, L und M in Spalte D ein, und in Spalte E wird der Komplexitätsfaktor mithilfe des Lookups aus dem automatisch abgerufen Komplexitätsmetriken Blatt.
- Der Benutzer gibt die Nacharbeitsgröße in Form von H, L und M in Spalte F ein, und in Spalte G wird der Faktor für die Komplexität mithilfe des Lookups aus dem Blatt 'Nacharbeitsmetriken' automatisch abgerufen.
- Die Faktoren werden dann in Spalte H verwendet, um den Gesamtaufwand für die Schätzung abzurufen.
- Ein anderes ausgeführtes Makro bereitet das Diagramm vor und fügt es auf dem vierten Blatt „Diagramm“ hinzu.
- Die enthaltenen Formeln werden über das Makro mit der Tastenkombination STRG + UMSCHALT + E gesteuert.
Schätzungen
Überarbeitungsmetriken
Komplexitätsmetriken
Diagramm
VBA-Code (Makro) für das Schätzblatt
' 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
Erklärung des Codes
(a) ThisWorkbook.Sheets (1) .Activat: Das erste Blatt 'Schätzungen' wird aktiviert.
(b) Blätter ('Schätzungen'). Zellen (4, 8) = Blätter ('Schätzungen'). Zellen (4, 2) * Blätter ('Schätzungen'). Zellen (4, 3) * Blätter ('Schätzungen') ) .Zellen (4, 5) * Blätter ('Schätzungen') .Zellen (4, 7): Diese Anweisung berechnet Spalte B * Spalte C * Spalte E * Spalte G und weist Spalte H für Zeile 4 zu.
(c) Blätter ('Schätzungen'). Zellen (5, 8) = Blätter ('Schätzungen'). Zellen (5, 2) * Blätter ('Schätzungen'). Zellen (5, 3) * Blätter ('Schätzungen') ). Zellen (5, 5) * Blätter ('Schätzungen'). Zellen (5, 7): Diese Anweisung berechnet Spalte B * Spalte C * Spalte E * Spalte G und weist Spalte H für Zeile 5 zu.
(d) Blätter ('Schätzungen'). Zellen (6, 8) = Blätter ('Schätzungen'). Zellen (6, 2) * Blätter ('Schätzungen'). Zellen (6, 3) * Blätter ('Schätzungen') ) .Zellen (6, 5) * Blätter ('Schätzungen') .Zellen (6, 7): Diese Anweisung berechnet Spalte B * Spalte C * Spalte E * Spalte G und weist Spalte H für Zeile 6 zu.
(e) Blätter ('Schätzungen'). Zellen (7, 8) = Blätter ('Schätzungen'). Zellen (7, 2) * Blätter ('Schätzungen'). Zellen (7, 3) * Blätter ('Schätzungen') ). Zellen (7, 5) * Blätter ('Schätzungen'). Zellen (7, 7): Diese Anweisung berechnet Spalte B * Spalte C * Spalte E * Spalte G und weist Spalte H für Zeile 7 zu.
(f) Blätter ('Schätzungen'). Zellen (8, 8) = Blätter ('Schätzungen'). Zellen (8, 2) * Blätter ('Schätzungen'). Zellen (8, 3) * Blätter ('Schätzungen') ) .Zellen (8, 5) * Blätter ('Schätzungen') .Zellen (8, 7): Diese Anweisung berechnet Spalte B * Spalte C * Spalte E * Spalte G und weist Spalte H für Zeile 8 zu.
(g) Blätter ('Schätzungen'). Zellen (9, 8) = Blätter ('Schätzungen'). Zellen (9, 2) * Blätter ('Schätzungen'). Zellen (9, 3) * Blätter ('Schätzungen') ) .Zellen (9, 5) * Blätter ('Schätzungen') .Zellen (9, 7): Diese Anweisung berechnet Spalte B * Spalte C * Spalte E * Spalte G und weist Spalte H für Zeile 9 zu.
(h) Blätter ('Schätzungen'). Zellen (10, 8) = Blätter ('Schätzungen'). Zellen (10, 2) * Blätter ('Schätzungen'). Zellen (10, 3) * Blätter ('Schätzungen') ) .Zellen (10, 5) * Blätter ('Schätzungen') .Zellen (10, 7): Diese Anweisung berechnet Spalte B * Spalte C * Spalte E * Spalte G und weist Spalte H für Zeile 10 zu.
(i) Blätter ('Schätzungen'). Zellen (11, 8) = Blätter ('Schätzungen'). Zellen (4, 8) + Blätter ('Schätzungen'). Zellen (5, 8) + Blätter ('Schätzungen') ). Zellen (6, 8) + Blätter ('Schätzungen'). Zellen (7, 8) + Blätter ('Schätzungen'). Zellen (8, 8) + Blätter ('Schätzungen'). Zellen (9, 8) + Blätter ('Schätzungen'). Zellen (10, 8): Diese Anweisung fasst die Zelle H2 zu H10 zusammen und weist H11 den Endwert zu. Dieser Wert liefert den Gesamtaufwand (in Stunden).
(j) Für i = 3 bis 10
Blätter ('Diagramm'). Zellen (i - 2, 1) = Blätter ('Schätzungen'). Zellen (i, 1)
Blätter ('Diagramm'). Zellen (i - 2, 2) = Blätter ('Schätzungen'). Zellen (i, 8)
Weiter ich: Diese For-Loop-Kopie fügt Daten aus Spalte 1 und Spalte 8 des Schätzblatts in das Diagrammblatt ein. Dies geschieht, damit die Daten aus dem Diagrammblatt zur Erstellung eines Kreisdiagramms verwendet werden können. Für das Blatt „Diagramm“ ist ein weiteres Makro geschrieben, das ein Diagramm dafür vorbereitet.
VBA (Makro) Code für Diagrammblatt
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
Erklärung des Codes
- Dim rng As Range: Diese Anweisung deklariert rng als Range-Wert.
- Dim ist als Objekt: Diese Anweisung deklariert est als Objektwert.
- Diese Arbeitsmappe. Blätter ('Diagramm'). Aktivieren: Diese Anweisung aktiviert das Diagrammblatt.
- Setzen Sie rng = ActiveSheet.Range ('A2: B8'): Der Bereich von A2 bis B8 des Blattdiagramms ist auf rng eingestellt.
- Setze est = ThisWorkbook.Sheets ('Diagramm'). Shapes.AddChart2: Diese Anweisung wird verwendet, um die Erstellung eines neuen Diagramms im Blattdiagramm zu initiieren.
- est.Chart.SetSourceData Quelle: = rng: Diese Anweisung bietet einen Datenbereich für die Betrachtung im Diagramm.
- est.Chart.ChartType = xl3DPieExploded: Der Diagrammtyp ist auf 3D Pie vom Typ Exploded eingestellt. Mit xl3DPieExploded können Sie diesen Diagrammtyp ermitteln.
- est.Chart.HasTitle = True: Diese Anweisung überprüft, ob das Diagramm bereits einen Titel hat.
- est.Chart.ChartTitle.Text = 'Test Estimates': Diese Anweisung überschreibt den Diagrammtitel in 'Testschätzungen'.
- est.Chart.SetElement (msoElementDataLabelCenter): Diese Anweisung legt die Datenbeschriftungen und Legenden für das Diagramm fest.
- est.Chart.SetElement (msoElementLegendBottom): Diese Anweisung setzt die Datenbeschriftungen an den unteren Rand des Diagramms.
Möglichkeiten zum Ausführen eines Makros
Ein Makro kann auf vier Arten ausgeführt werden:
- Verwenden des Symbols 'Ausführen' im VBA-Editorfenster.
- Wählen Sie in der Excel-Datei die Menüoption Ansicht -> Makros -> Makro anzeigen -> Wählen Sie den Makronamen und dann Ausführen.
- Erstellen Sie beim Erstellen des Makros eine Verknüpfung, und durch Drücken der Tastenkombinationen wird die Ausführung des Makros ausgelöst.
- Am benutzerfreundlichsten ist das Erstellen einer Aktionsschaltfläche ( Z.B. Befehlsschaltfläche), der ein Makro zugewiesen wird, das beim Klicken die Ausführung des Makros auslöst.
Wir werden sehen, wie Sie eine Befehlsschaltfläche hinzufügen und der Schaltfläche ein Makro zuweisen. Wenn Sie auf die Schaltfläche klicken, wird das Makro ausgeführt.
Hinzufügen einer Formularsteuerungsschaltfläche in Excel
- Wählen Menü 'Entwickler' -> Einfügen -> Formularsteuerelemente -> Schaltflächensymbol auswählen und fügen Sie die Schaltfläche in der Excel-Tabelle hinzu.
- Geben Sie den Namen und den Textwert für die Schaltfläche ein. Der Name der Schaltfläche wird in der VBA-Codierung verwendet, um diese Befehlsschaltfläche zu erkennen, während der Text auf der Schaltfläche angezeigt wird.
- Klicken Sie nun mit der rechten Maustaste auf die Befehlsschaltfläche und wählen Sie die Option ‘Makro zuweisen’ Wenn die Liste der Makros angezeigt wird, wählen Sie den Namen des Makros aus, das Sie zuweisen möchten.
- Sobald das Makro zugewiesen wurde, wird durch Klicken auf die Schaltfläche die Ausführung des zugewiesenen Makros ausgelöst.
- In diesem Beispiel ist die ‘Testschätzungen abrufen’ Schaltfläche ist zugeordnet 'Schätzungen' Makro.
- In ähnlicher Weise werden wir eine Befehlsschaltfläche für das Diagrammblatt hinzufügen und das Makro für das Diagramm zuweisen, um die Generierung des Diagramms auszulösen.
- Klicken Sie auf die 'Diagramm erstellen' Schaltfläche führt das Makro für Diagramm aus. Dies verbessert die Benutzerfreundlichkeit des Makros.
Fazit
Dies waren nur wenige Beispiele in Echtzeit, die Teil des Arbeitsalltags des Testers sein könnten, die für die Makroerzeugung intelligent identifiziert werden könnten und daher durch die Automatisierung der Aufgabe viel Zeit für irrelevante und sich wiederholende manuelle Anstrengungen sparen könnten.
Die relevanten Screenshots, der VBA-Code und das detaillierte Verständnis der einzelnen Codezeilen wurden in diesem Artikel behandelt. Ich hoffe, dies wird den QAs einen guten Vorsprung verschaffen, wie sie sich von einer manuellen Test-Denkweise zu einer Makro-Denkweise verwandeln können.
Lassen Sie uns für die Menschen, die glauben, dass die Arbeit der manuellen Tester eine rein nicht technische Aufgabe ist, durch die erforderliche Anwendung des technischen Wissens zur Verbesserung der Produktivität das Gegenteil beweisen.
Autor: Dieser ausführliche nützliche Beitrag wurde von Shobha D. verfasst. Sie arbeitet als Projektleiterin und verfügt über mehr als 9 Jahre Erfahrung in den Bereichen Handbuch, Automatisierung (IBM RFT und Selenium mit Java) und API-Tests.
Literatur-Empfehlungen
- Arbeiten mit VBScript Excel-Objekten
- Selenium Framework Erstellung und Zugriff auf Testdaten aus Excel - Selenium Tutorial # 21
- 5 Häufigste Testaufgaben Tester vergessen zu testen (und wie man das vermeidet)
- Top 5 Dinge, die ein Tester für Excel haben muss (und die sich verändernden Perspektiven des Software-Testers)
- JIRA-Unteraufgabe mit Beispiel (JIRA-Unteraufgabe erstellen)