Εμφάνιση ενός μόνο μηνύματος
  #1  
Παλιά 20-09-21, 14:30
Γιώργος Κοντούλης Ο χρήστης Γιώργος Κοντούλης δεν είναι συνδεδεμένος
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 12-02-2020
Μηνύματα: 9
Προεπιλογή Εύρεση δεδομένων σε UserForm

Αγαπημένοι και χρήσιμοι φίλοι μου,

Έχω φτιάξει μία φόρμα στην οποία καταχωρώ τα δεδομένα των μελών ενός συλλόγου (Επίθετο, όνομα κ.λ.π., κ.λ.π.) και η οποία με τη σειρά της (πατώντας ένα commandbutton “Αποθήκευση”) μεταφέρει τα δεδομένα σε ένα φύλλο excel (“Αρχείο Μελών”).
Παράλληλα, ήθελα να έχω τη δυνατότητα αναζήτησης των στοιχείων ενός μέλους, όχι στο φύλλο excel, αλλά στην ίδια τη φόρμα. Έχοντας λοιπόν κενά όλα τα πεδία της φόρμας, ήθελα να μπορώ πληκτρολογώντας το επίθετο στο textbox “txtSurename” και πατώντας στο πλήκτρο “cmndSearch” να συμπληρώνεται αυτόματα το Όνομα στο txtbox “Name” καθώς και τα διάφορα άλλα πεδία της φόρμας (με λίγα λόγια θέλω να κάνω κάτι σαν αυτό που κάνει το "Φιλτράρισμα με βάση τη φόρμα της Access).
Επειδή όμως υπάρχει η περίπτωση δύο (ή περισσοτέρων) μελών με το ίδιο επίθετο, έπρεπε να έχω τη δυνατότητα μιας διαδικασίας «Find Next».
Το μόνο που μου επέτρεπαν οι φτωχές μου γνώσεις στο αντικείμενο της vba, ήταν να googl-άρω και να βρω το εξής:

Private Sub cmndSearch_Click()

Dim FindValue As String
FindValue = txtSurename.Text

Dim Rng As Range
Set Rng = Range("A2:A200")

Dim FindRng As Range
Set FindRng = Rng.Find(FindValue)

Dim FirstCell As String

txtName.Text = Sheets("Αρχείο Μελών").Cells(FindRng.Row, 2).Value
.
.
.
(Ομοίως για τα υπόλοιπα πεδία της φόρμας (ημερ. Γέννησης, διεύθυνση κ.λ.π.).

Do
MsgBox FindRng.Address
Set FindRng = Rng.FindNext(FindRng)
FirstCell = FindRng.Address
txtName.Text = Sheets("Αρχείο Μελών").Cells(FindRng.Row, 2).Value
Loop While FirstCell <> FindRng.Address
MsgBox "Search is over"

End Sub

Έτσι, κάθε φορά που πατάω το πλήκτρο “OK” του MsgBox, εφόσον η διαδικασία εντοπίζει μέλη με το ίδιο επίθετο, προβάλει με τη σειρά τα στοιχεία τους στα πεδία της φόρμας.
Το πρόβλημά μου (ανάμεσα στα άλλα που δεν είναι της παρούσης), είναι ότι δεν θέλω να εμφανίζεται το MsgBox, αλλά να κάνω εύρεση της επόμενης εγγραφής με το πλήκτρο cmndSearch (ή με κάποιο άλλο πλήκτρο cmndNext) και μόνον εφόσον δεν υπάρχουν άλλες εγγραφές να παίρνω το μήνυμα “Search is over”.

Προσπάθησα σκληρά, αλλά ... τζίφος!!!
Πάσα βοήθεια δεκτή...

Υπάρχει τρόπος να γίνει εύρεση με χρήση πολλαπλών κριτηρίων (π.χ. txtSurename & txtName & txtDateOfBirth κλπ); Αν ναι, ξεφεύγει κατά πολύ από τα όρια της παραπάνω περίπτωσης;

Ευχαριστώ προκαταβολικά για τη βοήθεια…
Απάντηση με παράθεση