Πίνακας περιεχομένων:
- Ένα παράδειγμα για επόμενο
- Για επόμενα παραδείγματα με βήμα
- Ένα παράδειγμα για επόμενο παράδειγμα με μια εντολή Exit For
- Ένα ένθετο For-Next παράδειγμα
Βίντεο: You Bet Your Life: Secret Word - Tree / Milk / Spoon / Sky 2025
Ο απλούστερος τύπος βρόχου στον προγραμματισμό VBA του Excel είναι ένας βρόχος For-Next. Ο βρόχος ελέγχεται από μια μεταβλητή μετρητή, η οποία ξεκινά από μία τιμή και σταματά σε μια άλλη τιμή. Οι δηλώσεις μεταξύ της εντολής For και της εντολής Next είναι οι δηλώσεις που επαναλαμβάνονται στον βρόχο.
Ένα παράδειγμα για επόμενο
Το ακόλουθο παράδειγμα χρησιμοποιεί έναν βρόχο For-Next για να συγκεντρώσει τους πρώτους 1.000 θετικούς αριθμούς. Η μεταβλητή Σύνολο ξεκινά ως μηδέν. Στη συνέχεια συμβαίνει το βρόχο. Η μεταβλητή Cnt είναι ο μετρητής βρόχου. Αρχίζει ως 1 και αυξάνεται κατά 1 κάθε φορά μέσω του βρόχου. Ο βρόχος τελειώνει όταν το Cnt είναι 1, 000.
Αυτό το παράδειγμα έχει μόνο μία δήλωση μέσα στο βρόχο. Αυτή η δήλωση προσθέτει την τιμή του Cnt στη μεταβλητή Total. Όταν ολοκληρωθεί ο βρόχος, ένα MsgBox εμφανίζει το άθροισμα των αριθμών.
Υπομέγιστες αριθμοί () Δημ. Σύνολο ως Διπλό Dim Cnt Όσο μακρύ Σύνολο = 0 Για Cnt = 1 έως 1000 Σύνολο = Σύνολο + Cnt Επόμενο Cnt MsgBox Σύνολο End Sub
Επειδή ο μετρητής βρόχου είναι μια κανονική μεταβλητή, κώδικα για να αλλάξετε την τιμή του μέσα στο μπλοκ κώδικα μεταξύ των καταστάσεων For και Next. Αυτό, ωστόσο, είναι πολύ κακή πρακτική.
Για επόμενα παραδείγματα με βήμα
Μπορείτε να χρησιμοποιήσετε μια τιμή βημάτων για να παρακάμψετε ορισμένες τιμές μετρητή σε ένα βρόχο For-Next. Εδώ είναι το προηγούμενο παράδειγμα, που ξαναγράψαμε για να αθροίσουμε μόνο τους μονούς αριθμούς μεταξύ 1 και 1, 000:
Sub AddOddNumbers () Dim Σύνολο ως Διπλό Dim Cnt Όσο Μακρύ Σύνολο = 0 Για Cnt = 1 έως 1000 Βήμα 2 Σύνολο = Σύνολο + Cnt Επόμενο Cnt MsgBox Total End Sub
Αυτή τη φορά, το Cnt ξεκινάει ως 1 και στη συνέχεια παίρνει τιμές 3, 5, 7 και ούτω καθεξής. Η τιμή Step καθορίζει τον τρόπο με τον οποίο αυξάνεται ο μετρητής. Παρατηρήστε ότι η τιμή του ανώτερου βρόχου (1000) δεν χρησιμοποιείται στην πραγματικότητα επειδή η υψηλότερη τιμή του Cnt θα είναι 999.
Ακολουθεί ένα άλλο παράδειγμα που χρησιμοποιεί μια τιμή βήματος 3. Αυτή η διαδικασία λειτουργεί με το ενεργό φύλλο και εφαρμόζει ανοιχτόχρωμη σκίαση σε κάθε τρίτη γραμμή από τη σειρά 1 έως τη σειρά 100.
Sub ShadeEveryThirdRow () Dim i As Long Για i = 1 έως 100 Βήμα 3 Γραμμές (i). Εσωτερικό. Χρώμα = RGB (200, 200, 200) Επόμενο i End Sub
Ελέγξτε το αποτέλεσμα της εκτέλεσης αυτής της μακροεντολής.
Χρησιμοποιώντας ένα βρόχο για να εφαρμόσετε σκίαση φόντου στις σειρές.Ένα παράδειγμα για επόμενο παράδειγμα με μια εντολή Exit For
Ένας βρόχος For-Next μπορεί επίσης να περιλαμβάνει μία ή περισσότερες εντολές Exit For μέσα στον βρόχο. Όταν η VBA συναντήσει αυτήν τη δήλωση, ο βρόχος τερματίζεται αμέσως.
Το ακόλουθο παράδειγμα δείχνει τη δήλωση Exit For. Αυτή η ρουτίνα είναι μια διαδικασία Λειτουργίας, που προορίζεται να χρησιμοποιηθεί σε έναν τύπο φύλλου εργασίας.Η συνάρτηση δέχεται ένα όρισμα (μια μεταβλητή με όνομα Str) και επιστρέφει τους χαρακτήρες στα αριστερά του πρώτου αριθμητικού ψηφίου. Για παράδειγμα, εάν το όρισμα είναι "KBR98Z", η συνάρτηση επιστρέφει "KBR. "
Λειτουργία TextPart (Str) Dim i As Long TextPart =" "Για i = 1 Σε Len (Str) Αν IsNumeric (Mid (Str, i, i, 1) End If Next i End Function
Ο βρόχος For-Next ξεκινάει με 1 και τελειώνει με τον αριθμό που αντιπροσωπεύει τον αριθμό των χαρακτήρων στη συμβολοσειρά. Ο κώδικας χρησιμοποιεί τη λειτουργία Mid της VBA για να εξαγάγει ένα μόνο χαρακτήρα μέσα στον βρόχο. Αν βρεθεί ένας αριθμητικός χαρακτήρας, εκτελείται η εντολή Έξοδος για και ο βρόχος τελειώνει πρόωρα.
Εάν ο χαρακτήρας δεν είναι αριθμητικός, επισυνάπτεται στην επιστρεφόμενη τιμή (η οποία είναι ίδια με το όνομα της συνάρτησης). Η μόνη φορά που ο βρόχος θα εξετάσει κάθε χαρακτήρα είναι αν η συμβολοσειρά περάσει δεδομένου ότι το όρισμα δεν περιέχει αριθμητικούς χαρακτήρες.
Ένα ένθετο For-Next παράδειγμα
Μπορείτε να έχετε οποιουσδήποτε αριθμούς δηλώσεων στη θηλιά βρόχου και φωλιές For-Next εντός άλλων βρόχων For-Next.
Το ακόλουθο παράδειγμα χρησιμοποιεί έναν ενσωματωμένο βρόχο For-Next για την εισαγωγή τυχαίων αριθμών σε μια σειρά κυψελίδων 12 σειρών ανά στήλη. Παρατηρήστε ότι η ρουτίνα εκτελεί μία φορά το εσωτερικό βρόχο (το βρόχο με τον μετρητή γραμμών) για κάθε επανάληψη του εξωτερικού βρόχου (ο βρόχος με τον μετρητή Col). Με άλλα λόγια, η ρουτίνα εκτελεί την εντολή Cells (Row, Col) = Rnd 60 φορές.
Αυτά τα κελιά γεμίστηκαν χρησιμοποιώντας ένα βρόχο For-Next.Sub FillRange () Dim Col As Long Dim Row As Long για Col = 1 έως 5 για Row = 1 έως 12 Cells (Row, Col) = Rnd Next Row Επόμενο Col End Sub
-Next βρόχους για την προετοιμασία ενός τρισδιάστατου πίνακα με την τιμή 100. Αυτή η ρουτίνα εκτελεί τη δήλωση στη μέση όλων των βρόχων (εντολή εκχώρησης) 1, 000 φορές (10 * 10 * 10), κάθε φορά με διαφορετικό συνδυασμό των τιμών για τα i, j, και k:
Sub NestedLoops () Dim MyArray (10,10,10) Dim i As Long Dim j Μεγάλη Dim k Για όσο χρονικό διάστημα i = 1 έως 10 Για j = Για k = 1 έως 10 MyArray (i, j, k) = 100 Επόμενο k Επόμενο j Επόμενο i 'Άλλες δηλώσεις πηγαίνουν εδώ End Sub
Ακολουθεί ένα τελικό παράδειγμα που χρησιμοποιεί τους βρόχους For-Next. Αυτή η διαδικασία δημιουργεί ένα σκακιέρα μεταβάλλοντας το χρώμα φόντου εναλλασσόμενων κελιών.
Χρησιμοποιώντας βρόχους για να δημιουργήσετε ένα σχέδιο σκακιέρας.Οι βρόχοι μετρητών σειράς από 1 έως 8. Μια κατασκευή If-Then προσδιορίζει ποια ένθετη δομή For-Next θα χρησιμοποιήσει. Για αριθμημένες σειρές με μονό αριθμό γραμμών, ο μετρητής Col ξεκινά με 2. Για αύξοντες σειρές, ο μετρητής Col αρχίζει με 1. Οι δύο βρόχοι χρησιμοποιούν μια τιμή Step 2, έτσι επηρεάζονται τα εναλλακτικά κελιά. Δύο επιπλέον δηλώσεις κάνουν τα κελιά τετράγωνο (ακριβώς όπως ένα πραγματικό σκακιέρα).
Sub MakeCheckerboard () Dim R Όσο μακρύ, C όσο καιρό για R = 1 έως 8 Αν λειτουργούν φύλλο εργασίας. IsOdd (R) Στη συνέχεια για C = 2 έως 8 Βαθμίδα 2 Κύτταρα (R, C). Εσωτερικό. Χρώμα = 255 Επόμενο C Άλλο Για C = 1 έως 8 Βαθμίδα 2 Κύτταρα (R, C). Εσωτερικό. Χρώμα = 255 Επόμενο C End If Next R Rows ("1: 8").RowHeight = 35 Στήλες ("A: H"). ColumnWidth = 6. 5 Τέλος Sub