εμπορεύματα

Παραδείγματα μακροεντολών Excel που έχουν γραφτεί με VBA

Τα ακόλουθα απλά παραδείγματα μακροεντολών Excel γράφτηκαν χρησιμοποιώντας VBA 

Εκτιμώμενος χρόνος ανάγνωσης: 3 λεπτά

Παράδειγμα VBA με χρήση Array

Η ακόλουθη διαδικασία Sub διαβάζει τιμές από κελιά στη στήλη Α του ενεργού φύλλου εργασίας, μέχρι να συναντήσει ένα κενό κελί. Οι τιμές αποθηκεύονται σε έναν πίνακα. Αυτό το απλό παράδειγμα μακροεντολής του Excel επεξηγεί τη χρήση του:

  • Μεταβλητές δηλώσεις;
  • Δυναμικοί πίνακες;
  • Ένας κύκλος Do Until;
  • Ανατρέξτε στα κελιά στο τρέχον φύλλο εργασίας του Excel.
  • Η συνάρτηση VBA Ubound ενσωματωμένο (το οποίο επιστρέφει τον υψηλότερο δείκτη ενός πίνακα).
' Sub procedure store values in Column A of the active Worksheet
' into an array
Sub GetCellValues()
Dim iRow As Integer            ' stores the current row number
Dim dCellValues() As Double  ' array to store the cell values
iRow = 1
ReDim dCellValues(1 To 10)
' Do Until loop to extract the value of each cell in column A
' of the active Worksheet, as long as the cell is not blank
Do Until IsEmpty(Cells(iRow, 1))
   ' Check that the dCellValues array is big enough
   ' If not, use ReDim to increase the size of the array by 10
   If UBound(dCellValues) < iRow Then
      ReDim Preserve dCellValues(1 To iRow + 9)
   End If
   ' Store the current cell in the CellValues array
   dCellValues(iRow) = Cells(iRow, 1).Value
   iRow = iRow + 1
Loop
End Sub

Η διαδικασία αποθηκεύει τις τιμές στη στήλη Α του ενεργού φύλλου εργασίας σε έναν πίνακα, σημειώστε ότι:

  • Ο κύκλος Do Until εξάγει τις τιμές κάθε κελιού στη στήλη Α του ενεργού φύλλου εργασίας, αγνοώντας τα κενά κελιά
  • Ο όρος "If UBound(dCellValues) < iRow” ελέγχει ότι ο πίνακας dCellValues ​​είναι αρκετά μεγάλος ώστε να περιέχει τις πληροφορίες, εάν όχι, χρησιμοποιήστε το ReDim για να αυξήσετε το μέγεθος του πίνακα κατά 10
  • Τέλος, η εκπαίδευση​​dCellValues(iRow) = Cells(iRow, 1).Value” Αποθηκεύει το τρέχον κελί στον πίνακα CellValues

Παράδειγμα VBA με μαθηματικές πράξεις

Η ακόλουθη διαδικασία Sub διαβάζει τις τιμές από τη στήλη Α του φύλλου εργασίας που ονομάζεται «Φύλλο2» και εκτελεί αριθμητικές πράξεις στις τιμές. Οι τιμές που προκύπτουν εκτυπώνονται στη στήλη Α του τρέχοντος ενεργού φύλλου εργασίας.

Αυτή η μακροεντολή απεικονίζει:

Ενημερωτικό δελτίο καινοτομίας
Μην χάσετε τα πιο σημαντικά νέα για την καινοτομία. Εγγραφείτε για να τα λάβετε μέσω email.
  • Μεταβλητές δηλώσεις;
  • Αντικείμενα του Excel (συγκεκριμένα, χρήση της λέξης-κλειδιού Set και τρόπος πρόσβασης στο αντικείμενο "Στήλες" από το αντικείμενο "Φύλλα").
  • Ένας κύκλος Do Until;
  • Πρόσβαση σε φύλλα εργασίας και σε εύρη κελιών στο τρέχον βιβλίο εργασίας του Excel.
' Sub procedure to loop through the values in Column A of the Worksheet
' "Sheet2", perform arithmetic operations on each value, and write the
' result into Column A of the current Active Worksheet ("Sheet1")
Sub Transfer_ColA()
Dim i As Integer
Dim Col As Range
Dim dVal As Double
' Set the variable 'Col' to be Column A of Sheet 2
Set Col = Sheets("Sheet2").Columns("A")
i = 1
' Loop through each cell of the column 'Col' until
' a blank cell is encountered
Do Until IsEmpty(Col.Cells(i))
   ' Apply arithmetic operations to the value of the current cell
   dVal = Col.Cells(i).Value * 2 + 1
   ' The command below copies the result into Column A
   ' of the current Active Worksheet - no need to specify
   ' the Worksheet name as it is the active Worksheet.
   Cells(i, 1) = dVal
   i = i + 1
Loop
End Sub

Παράδειγμα VBA με εγγραφή ημερομηνίας τροποποίησης

Ας γράψουμε μια απλή μακροεντολή VBA που ενεργοποιείται όταν ενημερώνεται ένα κελί σε μια συγκεκριμένη περιοχή του φύλλου μας. Ας υποθέσουμε ότι θέλετε να παρακολουθήσετε τις αλλαγές στη στήλη Β (Β4 έως Β11) και να καταγράψετε την ημερομηνία και την ώρα της αλλαγής στη στήλη Α.
Ας προχωρήσουμε ως εξής:

  • Στην καρτέλα Developer κάντε κλικ στην επιλογή "Visual Basic” για να ανοίξετε το πρόγραμμα επεξεργασίας VBA.
  • Στο πρόγραμμα επεξεργασίας VBA, κάντε διπλό κλικ στον επεξεργαστή κώδικα που σχετίζεται με το Φύλλο2.
  • Επιλέξτε Φύλλο εργασίας από τη δεξιά (ή αριστερή) καρτέλα και επιλέξτε Αλλαγή.
  • Προσθήκη κωδικού VBA:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B1:B10")) Is Nothing Then
        Target.Range("A1:A1").Value = Now
    End If
End Sub

Αποθηκεύστε το βιβλίο εργασίας με ενεργοποιημένες τις μακροεντολές (για παράδειγμα, ως αρχείο .xlsm).


Τώρα, κάθε φορά που ενημερώνουμε ένα κελί στη στήλη Β (από τη σειρά 1 στη σειρά 10), το κελί στη στήλη Α θα εμφανίζει αυτόματα την τρέχουσα ημερομηνία και ώρα.

Ercole Palmeri

Ενημερωτικό δελτίο καινοτομίας
Μην χάσετε τα πιο σημαντικά νέα για την καινοτομία. Εγγραφείτε για να τα λάβετε μέσω email.

Πρόσφατα άρθρα

Το Veeam διαθέτει την πιο ολοκληρωμένη υποστήριξη για ransomware, από προστασία έως απόκριση και ανάκτηση

Η Coveware από την Veeam θα συνεχίσει να παρέχει υπηρεσίες αντιμετώπισης περιστατικών εκβιασμών στον κυβερνοχώρο. Το Coveware θα προσφέρει ιατροδικαστικές και δυνατότητες αποκατάστασης…

Απρίλιος 23 2024

Πράσινη και ψηφιακή επανάσταση: Πώς η προβλεπτική συντήρηση μεταμορφώνει τη βιομηχανία πετρελαίου και φυσικού αερίου

Η προγνωστική συντήρηση φέρνει επανάσταση στον τομέα του πετρελαίου και του φυσικού αερίου, με μια καινοτόμο και προορατική προσέγγιση στη διαχείριση των εγκαταστάσεων.…

Απρίλιος 22 2024

Η ρυθμιστική αρχή αντιμονοπωλιακής νομοθεσίας του Ηνωμένου Βασιλείου εγείρει συναγερμό της BigTech για το GenAI

Η βρετανική CMA εξέδωσε προειδοποίηση σχετικά με τη συμπεριφορά της Big Tech στην αγορά τεχνητής νοημοσύνης. Εκεί…

Απρίλιος 18 2024

Casa Green: ενεργειακή επανάσταση για ένα βιώσιμο μέλλον στην Ιταλία

Το διάταγμα «Case Green», που διατυπώθηκε από την Ευρωπαϊκή Ένωση για τη βελτίωση της ενεργειακής απόδοσης των κτιρίων, ολοκλήρωσε τη νομοθετική του διαδικασία με…

Απρίλιος 18 2024

Διαβάστε την Καινοτομία στη γλώσσα σας

Ενημερωτικό δελτίο καινοτομίας
Μην χάσετε τα πιο σημαντικά νέα για την καινοτομία. Εγγραφείτε για να τα λάβετε μέσω email.

Seguici