Καλησπέρα
Κάνε το βιβλίο σου
.xlsm, για να μπορεί να εκτελέσει κώδικα.
Αντέγραψε τον πιο κάτω κώδικα στο φύλλο Sheet14(ΓΙΑ ΣΗΜΕΡΑ ΘΑ ΑΠΟΥΣΙΑΖΟΥΝ )
Μπαίνοντας στο φύλλο, χωρίς καμία άλλη ενέργεια θα έχουμε το ζητούμενο.
Κώδικας:
Private Sub Worksheet_Activate()
Sheets(14).Range("f3:g7").ClearContents 'αλλαγή σημείο 2
Dim isheet As Byte _
, iday As Byte _
, imonth As Byte _
, i As Byte _
, k As Byte _
, icol As Byte _
, rng As Range _
, c As Range _
, abse As String _
, namd As String
iday = Day(Date)
imonth = Month(Date)
k = 3
Set rng = Sheets(imonth).Range("c6:ag6")
For Each c In rng
If c.Value = iday Then
icol = c.Column
For i = 7 To 11 'αλλαγή σημείο 1
If Sheets(imonth).Cells(i, icol).Value <> "" Then
abse = Sheets(imonth).Cells(i, icol).Value
namd = Sheets(imonth).Cells(i, 2).Value
Sheets(14).Cells(k, 6).Value = namd
Sheets(14).Cells(k, 7).Value = abse
k = k + 1
End If
Next i
End If
Next c
End Sub
Ο κώδικας ισχύει για την συγκεκριμένη μορφή (γραμμές - στήλες) των φύλλων
καθώς και την σειρά που έχουν στο βιβλίο πχ Ιανουάριος - πρώτο, Φευρουάριος - δεύτερο ... ΓΙΑ ΣΗΜΕΡΑ ΘΑ ΑΠΟΥΣΙΑΖΟΥΝ - δέκατο τέταρτο κλπ
Προσοχή:
Στην μορφή που έχουν τα φύλλα, οι υπάλληλοι βρίσκονται στις γραμμές 7 - 11.
Αν αυξήσουμε τους υπαλλήλους και συνεπώς τις γραμμές, θα πρέπει να
αλλάξουμε το i = 7 To
11 στο σημείο αλλαγής 1
Ανάλογα με αυτό, θα αλλάξουμε και στην αρχή την περιοχή εμφάνισης
Sheets(14).Range("f3:
g7").ClearContents στο σημείο αλλαγής 2
Βοήθεια για τις αλλαγές:
Ανάλογα με το i το κελί g, έχει
μειωμένο αριθμό κατά
4.
Αν λοιπόν αλλάξουμε το i σε
For i = 7 To
20 για παράδειγμα, τότε το κελί g7 στην περιοχή εμφάνισης, θα γίνει
Sheets(14).Range("f3:
g16")