Εμφάνιση ενός μόνο μηνύματος
  #4  
Παλιά 04-05-20, 18:56
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Γιώργο μου το συμβάν "TextBox3_BeforeUpdate" θα τρέξει μόνο αν προκληθεί από τον χρήστη.

Δεν τρέχει όταν αλλάξει η τιμή του πεδίου προγραμματιστικά.

Προτείνω να χρησιμοποιήσεις την παρακάτω συνάρτηση:

Κώδικας:
Private Function ValueExists(strValue As String) As Boolean
    If strValue = "" Then Exit Function
    Set fCell = Worksheets("Data").Range("c:c").Find(What:=TextBox3.Value, LookIn:=xlValues, Lookat:=xlWhole)
    ValueExists = Not fCell Is Nothing
End Function
Η συνάρτηση ελέγχει αν υπάρχει διπλότυπο στη στήλη C και μπορεί να κληθεί από οποιοδήποτε σημείο της φόρμας ως εξής:

Κώδικας:
Private Sub TextBox3_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    If ValueExists(Trim(TextBox3.Value)) Then
        Cancel = True
        '........
    End If
End Sub
ή

Κώδικας:
Private Sub ListBox1_Click()
    Dim say As Long, a As Byte

    If ValueExists(ListBox1.Column(2)) Then
        ' Υπάρχει διπλοεγγραφή. Κάνε κάτι.
        ' πχ. Exit Sub ή Msgbox
    End If

    '.............
    '.............

End Sub
Καλή συνέχεια!

Με εκτίμηση

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση