excmacro

Μακροεντολές

Οι μακροεντολές (macros) στο Excel αναφέρονται σε ένα σύνολο εντολών προγραμματισμού που εκτελούνται για να εκτελέσουν μια σειρά από εργασίες ή ενέργειες με ένα μόνο πάτημα κουμπιού ή μιας συγκεκριμένης ενέργειας. Για μαθητές στο δημοτικό, οι μακροεντολές μπορεί να είναι λίγο πιο προχωρημένο θέμα, αλλά ενδέχεται να καταλάβουν την έννοια ως έναν τρόπο αυτοματισμού εργασιών στο Excel.

Οι μακροεντολές χρησιμοποιούν τη γλώσσα προγραμματισμού VBA (Visual Basic for Applications) και επιτρέπουν στους χρήστες να καταγράφουν και να αναπαράγουν σειρές ενεργειών με ένα κλικ, δημιουργώντας έτσι αποτελεσματικές και εξατομικευμένες λύσεις για τις ανάγκες τους.

Ένα απλό παράδειγμα μακροεντολής στο Excel θα μπορούσε να είναι η δημιουργία μιας εντολής που να αυξάνει τις τιμές μιας στήλης κατά ένα συγκεκριμένο ποσοστό ή να διαμορφώνει τη μορφοποίηση των κελιών. Όταν αυτή η μακροεντολή καταγραφεί, ο μαθητής μπορεί να εκτελέσει αυτή τη διαδικασία με ένα απλό κλικ.

Σημαντικό είναι να κατανοήσουν ότι οι μακροεντολές είναι ένα εργαλείο προγραμματισμού, και μπορεί να χρησιμοποιηθεί για να δημιουργήσουν προσαρμοσμένες λύσεις στο Excel που να εξυπηρετούν τις ανάγκες τους.
Κουμπί για εκτέλεση μακροεντολών

Στο Excel, επιλέξτε την καρτέλα Προγραμματιστής (developer) και, στη συνέχεια, κάντε κλικ στο αναπτυσσόμενο μενού «Εισαγωγή» (insert) στην ενότητα Στοιχεία ελέγχου. Υπάρχουν διάφοροι τύποι στοιχείων ελέγχου που χωρίζονται σε δύο ενότητες, "Στοιχεία ελέγχου φόρμας" και "Στοιχεία ελέγχου ActiveX".

Προς το παρόν, απλώς κάνε κλικ στο στοιχείο ελέγχου Κουμπί κάτω από τα "Στοιχεία ελέγχου φόρμας". Στη συνέχεια, μετακίνησε το ποντίκι οπουδήποτε πάνω από την επιφάνεια του φύλλου εργασίας, μετά κράτησε πατημένο το αριστερό κλικ και σύρε το ποντίκι για να σχεδιάσεις το περίγραμμα ενός ορθογωνίου. Όταν αφήσεις το αριστερό κλικ, θα εμφανιστεί ένα νέο παράθυρο διαλόγου με τίτλο " Ανάθεση μακροεντολής ".


Εδώ μπορείτε να αντιστοιχίσετε μια υπάρχουσα μακροεντολή στο κουμπί, να εγγράψετε μια νέα μακροεντολή, να δημιουργήσετε μια νέα μακροεντολή από την αρχή χρησιμοποιώντας το VBA ή να κάνετε κλικ στο "Ακύρωση" και να επιστρέψετε στο κουμπί σας αργότερα.

Για να εκχωρήσετε μια υπάρχουσα μακροεντολή, απλώς επιλέξτε το όνομα της μακροεντολής στη λίστα και, στη συνέχεια, κάντε κλικ στο OK.

Εδώ μπορείς να δεις την εκχωρηθείσα μακροεντολή και να κάνεις τις επιθυμητές αλλαγές.


Απόκρυψη άλλων φύλλων εκτός από το ενεργό






'This macro will hide all the worksheet except the active sheet
Sub HideAllExceptActiveSheet()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> ActiveSheet.Name Then ws.Visible = xlSheetHidden
Next ws
End Sub
Προστασία φύλλων

'This code will protect all the sheets at one go
Sub ProtectAllSheets()
Dim ws As Worksheet
Dim password As String
password = "Test123" 'replace Test123 with the password you want
For Each ws In Worksheets
   ws.Protect password:=password
Next ws
End Sub
Ξεκλείδωμα όλων των φύλλων

'This code will protect all the sheets at one go
Sub ProtectAllSheets()
Dim ws As Worksheet
Dim password As String
password = "Test123" 'replace Test123 with the password you want
For Each ws In Worksheets
ws.Unprotect password:=password
Next ws
End Sub
Απόθηκευση με ημερομηνία

'This code will Save the File With a Timestamp in its name
Sub SaveWorkbookWithTimeStamp()
Dim timestamp As String
timestamp = Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hh-ss")
ThisWorkbook.SaveAs "C:UsersUsernameDesktopWorkbookName" & timestamp
End Sub
Απόθηκευση κάθε φύλλου σε διαφορετικό pdf

'This code will save each worsheet as a separate PDF
Sub SaveWorkshetAsPDF()
Dim ws As Worksheet
For Each ws In Worksheets
ws.ExportAsFixedFormat xlTypePDF, "C:UsersSumitDesktopTest" & ws.Name & ".pdf"
Next ws
End Sub
Απόθηκευση σε pdf σε συγκεκριμένο φάκελο

'This code will save the entire workbook as PDF
Sub SaveWorkshetAsPDF()
ThisWorkbook.ExportAsFixedFormat xlTypePDF, "C:UsersSumitDesktopTest" & ThisWorkbook.Name & ".pdf"
End Sub
Κουίζ σκορ

Sub CheckScore()
If Range("A1").Value >= 35 Then
MsgBox "Pass"
Else
MsgBox "Fail"
End If
End Sub
Sub CheckScore()
If Range("A1").Value < 35 Then MsgBox "Fail"
If Range("A1").Value >= 35 Then MsgBox "Pass"
End Sub
Sub CheckScore()
If Range("A1").Value < 35 Then
MsgBox "Fail"
Else
If Range("A1").Value < 80 Then
MsgBox "Pass"
Else
MsgBox "Pass, with Distinction"
End If
End If
End Sub
Sub CheckScore()
If Range("A1").Value < 35 Then
MsgBox "Fail"
ElseIf Range("A1").Value < 80 Then
MsgBox "Pass"
Else
MsgBox "Pass, with Distinction"
End If
End Sub
Sub CheckScore()
If Range("A1").Value < 35 Or Range("B1").Value < 35 Then
MsgBox "Fail"
ElseIf Range("A1").Value < 80 And Range("B1").Value < 80 Then
MsgBox "Pass"
Else
MsgBox "Pass, with Distinction"
End If
End Sub
Sub CheckScore()
If Range("A1").Value < 35 Or Range("B1").Value < 35 Then
MsgBox "Fail"
ElseIf Range("A1").Value > 80 Or Range("B1").Value > 80 Then
MsgBox "Pass, with Distinction"
Else
MsgBox "Pass"
End If
End Sub
Κλείφωμα κελιων που περιέχουν συναρτήσεις

'This macro code will lock all the cells with formulas
Sub LockCellsWithFormulas()
With ActiveSheet
   .Unprotect
   .Cells.Locked = False
   .Cells.SpecialCells(xlCellTypeFormulas).Locked = True
   .Protect AllowDeletingRows:=True
End With
End Sub
Highlight Κελιά που έχουν σχόλια

'This code will highlight cells that have comments`
Sub HighlightCellsWithComments()
ActiveSheet.Cells.SpecialCells(xlCellTypeComments).Interior.Color = vbBlue
End Sub
Εύρεση θέσης γράμματος ή χαρακτήρα, αριθμού μέσα σε ένα κελί

Function FindPosition(Ref As Range) As Integer
Dim Position As Integer
Position = InStr(1, Ref, "@")
FindPosition = Position
End Function
Εισαγωγή όλων των ημερών του μήνα

Sub EnterCurrentMonthDates()
Dim CMDate As Date
Dim i As Integer
i = 0
CMDate = DateSerial(Year(Date), Month(Date), 1)
Do While Month(CMDate) = Month(Date)
Range("A1").Offset(i, 0) = CMDate
i = i + 1
CMDate = CMDate + 1
Loop
End Sub
Επιλογή του αριθμού μέσα απο κελί με κείμενο και αριθμούς

Function GetNumeric(CellRef As String) as Long
Dim StringLength As Integer
StringLength = Len(CellRef)
For i = 1 To StringLength
If IsNumeric(Mid(CellRef, i, 1)) Then Result = Result & Mid(CellRef, i, 1)
Next i
GetNumeric = Result
End Function
VB κλικ σε κελι και δημιουργία "σταυρού" επιλογής

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlNone
With ActiveCell
.EntireRow.Interior.Color = RGB(248, 203, 173)
.EntireColumn.Interior.Color = RGB(180, 198, 231)
End With
End Sub
VB διαγραφή από λίγστα με ένα κλικ

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
CurrFormat = Target.Font.Strikethrough
If CurrFormat Then
Target.Font.Strikethrough = False
Else
Target.Font.Strikethrough = True
End If
End Sub
Εισαγωγή ημερομηνίας με συντόμευση πλήκτρων

Ακολουθήστε τα παρακάτω βήματα για να εφαρμόσετε το ίδιο:
Επιλέξτε το κελί στο οποίο πρέπει να εισαχθεί η τρέχουσα ημερομηνία ή ώρα.
Χρησιμοποιήστε αυτήν τη συντόμευση – Ctrl + ; ( Control + ερωτηματικό ) για να εισαγάγετε την τρέχουσα ημερομηνία.

VBA κώδικας και modules

Αυτόματος μετρητής ίδιου αντικειμένου

Αρχικά, μεταβείτε στο Προγραμματιστής (Developer) Visual Basic και ανοίξτε το παράθυρο VBA. Στη συνέχεια, μεταβείτε στο Insert - Module για να γράψετε τον κωδικό και να λάβετε τον χρωματικό δείκτη με τους αριθμούς.

Sub ColorIndexNumbers()
startRow = 5
startColumn = 2
For iStart = 1 To 56
Cells(startRow, startColumn).Interior.colorIndex = iStart
Cells(startRow, startColumn) = iStart
If iStart > 1 And iStart Mod 14 = 0 Then
startColumn = startColumn + 1
startRow = 5
Else
startRow = startRow + 1
End If
Next
End Sub

Αλλαγή χρώματος κελιού
Sub BackgroundColour()
Range("D5:D12").Interior.colorIndex = 43
End Sub
Αλλαγή χρώματος γραμματοσειράς κελιού

ΚΑΤΕΒΑΣΕ ΕΔΩ .xls
Sub FontColor()
Range("D5:D12").Font.colorIndex = 10
End Sub
Μοναδικές εγγραφές

ΚΑΤΕΒΑΣΕ ΕΔΩ .xls


Χρωματική κλίμακα διαφοροποίησης

ΚΑΤΕΒΑΣΕ ΕΔΩ .xls
Παρουσιολόγιο

ΚΑΤΕΒΑΣΕ ΕΔΩ .xls
Ποιο συχνά εμφανιζόμενη τιμή

ΚΑΤΕΒΑΣΕ ΕΔΩ .xls