Αυτό το σεμινάριο θα σας δείξει παραδείγματα χρήσης του Για κάθε βρόχο στο VBA. Κάντε κλικ εδώ για να μάθετε περισσότερα σχετικά με τους βρόχους γενικά.
Για κάθε βρόχο
Το For Every Loop σάς επιτρέπει να κάνετε βρόχο καθε αντικείμενο σε μια συλλογή:
- Όλα τα κελιά σε μια περιοχή
- Όλα τα φύλλα εργασίας σε ένα βιβλίο εργασίας
- Όλα τα ανοιχτά βιβλία εργασίας
- Όλα τα σχήματα σε ένα φύλλο εργασίας
- Όλα τα στοιχεία σε έναν πίνακα
- κι αλλα!
Για καθένα: Βασικά παραδείγματα
Αυτά τα παραδείγματα θα καταδείξουν τον τρόπο ρύθμισης του βρόχου "Για κάθε βρόχο" ώστε να περνά μέσα από διαφορετικούς τύπους αντικειμένων.
Loop Through Cells
Αυτή η διαδικασία θα περιηγηθεί σε κάθε κελί στην περιοχή A1: A10, ρυθμίζοντας το κελί στο σωστό ίσο με τον εαυτό του.
12345678 | Sub ForEachCell ()Dim Cell As RangeΓια κάθε κελί σε φύλλα ("Sheet1"). Εύρος ("A1: A10")Cell.Offset (0, 1). Αξία = Cell.valueΕπόμενο κελίΤέλος υπο |
Loop Through Sheets
Αυτή η διαδικασία θα βολέψει κάθε φύλλο σε ένα βιβλίο εργασίας, αποκρύπτοντας κάθε φύλλο.
12345678 | Sub ForEachSheets ()Dim ws Ως φύλλο εργασίαςΓια κάθε ένα σε φύλλαws.Visible = TrueΕπόμενο φύλλοΤέλος υπο |
Loop Through Workbooks
Αυτή η διαδικασία θα κάνει βρόχο σε κάθε βιβλίο εργασίας, κλείνοντας το καθένα.
12345678 | Sub ForEachWorkbooks ()Dim wb Ως βιβλίο εργασίαςΓια κάθε wb Σε βιβλία εργασίαςwb. ΚλείσιμοΕπόμενο wbΤέλος υπο |
Loop Through Shapes
Αυτή η διαδικασία θα κάνει βρόχο σε κάθε σχήμα στο Sheet1, διαγράφοντας το καθένα.
12345678 | Sub ForEachShape ()Dim Shp As ShapeΓια κάθε Shp σε φύλλα ("Sheet1"). ΣχήματαShp. ΔιαγραφήΕπόμενο ShpΤέλος υπο |
Loop Through Charts
Αυτή η διαδικασία θα κάνει βρόχο σε κάθε γράφημα στο Sheet1, διαγράφοντας το καθένα.
12345678 | Sub ForEachCharts ()Dim cht As ChartObjectΓια κάθε cht σε φύλλα ("Sheet1"). ChartObjectscht. ΔιαγραφήΕπόμενο chtΤέλος υπο |
Loop Through PivotTables
Αυτή η διαδικασία θα κάνει βρόχο σε κάθε Συγκεντρωτικό Πίνακα στο Φύλλο1, καθαρίζοντας τον καθένα
12345678 | Υπο ForEachPivotTables ()Dim pvt As PivotTableΓια κάθε pvt σε φύλλα ("Sheet1"). Συγκεντρωτικοί πίνακεςpvt.ClearTableΕπόμενο pvtΤέλος υπο |
Loop Through Tables
Αυτή η διαδικασία θα περάσει σε κάθε πίνακα στο Sheet1, διαγράφοντας τον καθένα.
12345678 | Υπο ForEachTables ()Dim tbl Ως ListObjectΓια κάθε tbl σε φύλλα ("Sheet1"). ListObjectstbl. ΔιαγραφήΕπόμενο tblΤέλος υπο |
Loop Through Items in Array
Αυτή η διαδικασία θα κάνει βρόχο σε κάθε στοιχείο σε έναν πίνακα, θα εμφανίσει κάθε τιμή σε ένα πλαίσιο msg,
12345678910 | Sub ForEachItemInArray ()Dim arrValue As VariantΕλαφρύ στοιχείο ως παραλλαγήarrValue = Πίνακας ("Στοιχείο 1", "Στοιχείο 2", "Στοιχείο 3")Για κάθε στοιχείο σε arrValueΣτοιχείο MsgBoxΕπόμενο ΣτοιχείοΤέλος υπο |
Loop Through Numbers
Αυτή η διαδικασία θα πραγματοποιήσει βρόχο σε κάθε αριθμό σε έναν πίνακα, θα εμφανίσει κάθε τιμή σε ένα πλαίσιο msg,
12345678910111213 | Υπο ForEachNumberInNumbers ()Dim arrNumber (1 έως 3) Ως ακέραιος αριθμόςDim num As VariantarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30Για κάθε αριθμό σε arrNumberMsgbox ΑριθΕπόμενο αριθΤέλος υπο |
Για κάθε Loop Builder
Τα παραδείγματα σε αυτό το άρθρο δημιουργήθηκαν με το Loop Builder στο δικό μας Πρόσθετο VBA: AutoMacro.
ο Loop Builder καθιστά πολύ εύκολη τη δημιουργία κώδικα για την περιστροφή των αντικειμένων. AutoMacro περιέχει επίσης πολλά άλλα Γεννήτριες κώδικα, μια εκτεταμένη Βιβλιοθήκη κωδικών, και ισχυρό Εργαλεία κωδικοποίησης.
Για καθένα - Αν
Μπορείτε επίσης να χρησιμοποιήσετε το If Statements within Loops για να ελέγξετε εάν τα αντικείμενα πληρούν ορισμένα κριτήρια, εκτελώντας μόνο ενέργειες σε εκείνα τα αντικείμενα που πληρούν τα κριτήρια. Ακολουθεί ένα παράδειγμα περιήγησης σε κάθε κελί σε μια περιοχή:
Για κάθε κελί σε εύρος - Αν
1234567891011121314 | Sub If_Loop ()Dim Cell ως RangeΓια κάθε κελί σε εμβέλεια ("A2: A6")Αν Cell.Value> 0 ΤότεCell.Offset (0, 1) .Value = "Θετικό"ElseIf Cell.Value <0 ΤότεCell.Offset (0, 1) .Value = "Αρνητικό"ΑλλούCell.Offset (0, 1) .Value = "Zero"Τέλος εανΕπόμενο κελίΤέλος υπο |
Για κάθε κοινό παράδειγμα
Κλείσιμο όλων των βιβλίων εργασίας
Αυτή η διαδικασία θα κλείσει όλα τα ανοιχτά βιβλία εργασίας, αποθηκεύοντας τις αλλαγές.
123456789 | Sub CloseAllWorkbooks ()Dim wb Ως βιβλίο εργασίαςΓια κάθε wb Σε βιβλία εργασίαςwb. Κλείσιμο SaveChanges: = TrueΕπόμενο wbΤέλος υπο |
Απόκρυψη όλων των φύλλων
Αυτή η διαδικασία θα αποκρύψει όλα τα φύλλα εργασίας.
12345678 | Sub HideAllSheets ()Dim ws Ως φύλλο εργασίαςΓια κάθε ένα σε φύλλαws.Visible = xlSheetHiddenΕπόμενο wsΤέλος υπο |
Απόκρυψη όλων των φύλλων
Αυτή η διαδικασία θα εμφανίσει όλα τα φύλλα εργασίας.
12345678 | Υπο UnhideAllSheets ()Dim ws Ως φύλλο εργασίαςΓια κάθε ένα σε φύλλαws.Visible = xlSheetVisibleΕπόμενο wsΤέλος υπο |
Προστατέψτε όλα τα φύλλα
Αυτή η διαδικασία θα προστατεύσει όλα τα φύλλα εργασίας.
12345678 | Sub ProtectAllSheets ()Dim ws Ως φύλλο εργασίαςΓια κάθε ένα σε φύλλαws.Protect Password: = "…"Επόμενο wsΤέλος υπο |
Κατάργηση προστασίας όλων των φύλλων
Αυτή η διαδικασία θα προστατεύσει όλα τα φύλλα εργασίας.
12345678 | Sub UnprotectAllSheets ()Dim ws Ως φύλλο εργασίαςΓια κάθε ένα σε φύλλαws.Usprotect Password: = "…"Επόμενο wsΤέλος υπο |
Διαγραφή όλων των σχημάτων σε όλα τα φύλλα εργασίας
Αυτή η διαδικασία θα διαγράψει όλα τα σχήματα σε ένα βιβλίο εργασίας.
123456789101112 | Sub DeleteAllShapesOnAllWorksheets ()Dim Sheet As WorksheetDim Shp As ShapeΓια κάθε ένα σε φύλλαΓια κάθε Shp In ws.ShapesShp. ΔιαγραφήΕπόμενο ShpΕπόμενο wsΤέλος υπο |
Ανανέωση όλων των Συγκεντρωτικών Πίνακες
Αυτή η διαδικασία θα ανανεώσει όλους τους Συγκεντρωτικούς Πίνακες σε ένα φύλλο.
12345678 | Sub RefreshAllPivotTables ()Dim pvt As PivotTableΓια κάθε pvt σε φύλλα ("Sheet1"). Συγκεντρωτικοί πίνακεςpvt. Ανανέωση πίνακαΕπόμενο pvtΤέλος υπο |
Χρήση για καθένα στην Access VBA
Ο βρόχος Για κάθε λειτουργεί με τον ίδιο τρόπο στο Access VBA όπως και στο Excel VBA. Το ακόλουθο παράδειγμα θα καταργήσει όλους τους πίνακες στην τρέχουσα βάση δεδομένων.
123456789 | Sub RemoveAllTables ()Dim tdf Ως TableDefDim dbs As DatabaseΟρίστε dbs = CurrentDbΓια κάθε tdf Σε dbs.TableDefsDoCmd.DeleteObject tdf.NameΒρόχοςΟρισμός dbs = ΤίποταΤέλος υπο |