Εμφάνιση ενός μόνο μηνύματος
  #2  
Παλιά 27-09-17, 17:34
Το avatar του χρήστη Spirosgr
Spirosgr Ο χρήστης Spirosgr δεν είναι συνδεδεμένος
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Καλησπέρα
Κάνε το βιβλίο σου .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")

Τελευταία επεξεργασία από το χρήστη Spirosgr : 28-09-17 στις 08:30. Αιτία: ορθογραφία - σύνταξη
Απάντηση με παράθεση