Μάρω καλημέρα!
Kατά το φιλτράρισμα η Excel δεν εκτελεί κάποιο συμβάν τύπου ""OnAutoFilter" όπου θα μπορούσες να προσθέσεις κώδικα.
Μπορεί να εκτελέσει όμως το συμβάν
Worksheet_Calculate() αν στο φύλλο υπάρχουν τύποι
που χρειάζονται συνεχώς νέο υπολογισμό όπως πχ.συναρτήσεις ημερομηνίας.
Στη λειτουργική μονάδα κλάσης του φύλλου πέρασε τον κώδικα:
Κώδικας:
Option Explicit
Private IsCalculating As Boolean
Private Sub Worksheet_Calculate()
If IsCalculating Then
IsCalculating = False
Exit Sub
End If
IsCalculating = True
On Error GoTo ErrH
Dim rng As Range, c As Range
If ActiveSheet.AutoFilterMode Then
If ActiveSheet.AutoFilter.Range.Columns(1) _
.SpecialCells(xlCellTypeVisible).Count > 1 Then
Set rng = ActiveSheet.AutoFilter.Range
Set rng = rng.Offset(1).Columns(1)
For Each c In rng.SpecialCells(xlCellTypeVisible)
If c <> vbNullString Then
Me.Range("D1") = c ' Προσάρμοσε το αν χρειαστεί
Exit For
End If
Next
End If
End If
ErrH:
If Err Then IsCalculating = False
End Sub
Αν δεν σου εμφανίζεται το αποτέλεσμα, θα πρέπει να προσθέσεις κάπου σε ένα κελί του φύλλου τον τύπο
=NOW() για να προκαλείται υπολογισμός κατά το φιλτράρισμα και κατά συνέπεια η εκτέλεση του Worksheet_Calculate().
Αν εφαρμόζεις φίλτρο μόνο τη στήλη B, θα σου πρότεινα να χρησιμοποιήσεις σε ένα κελί τον παρακάτω τύπο
CSE:
Κώδικας:
=INDEX(A:A;MATCH(INDEX(B:B;MAX(SUBTOTAL(3;INDIRECT("B"&ROW(2:999)))*ROW(2:999)));B:B;0))
Καλή συνέχεια!
Φιλικά
Τάσος