Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [Γενικά] Messenger Επαναλαμβανόμενο!

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 01-11-17, 15:42
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-04-2013
Μηνύματα: 253
Προεπιλογή Messenger Επαναλαμβανόμενο!

Καλησπέρα,
Σε μια βάση δεδομένων καταχωρώ ονόματα & τηλέφωνα,
Μέσω του TextBox1 & OptionBatton1 αντίστοιχα κάνω αναζήτηση ονόματος και του TextBox2 & OptionBatton2 αντίστοιχα κάνω αναζήτηση με τηλέφωνο, αντίστοιχα αν γίνει λάθος πληκτρολόγηση να παίρνω μήνυμα λάθους, αυτό αντιμετωπίζω είναι στην αναζήτηση με όνομα και με σωστή πληκτρολόγηση παίρνω πάλι μήνυμα λάθους, ενώ αυτό δεν συμβαίνει με αναζήτηση τηλεφώνου.
Δεν μπόρεσα να βρω τι κάνω λάθος.
Στο σημείο αυτό θα ήθελα τη βοήθεια σας.
Παραθέτω συνημμένο.
Ευχαριστώ για όποια βοήθεια.
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm Phone_Book.xlsm (209,1 KB, 20 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 01-11-17, 19:27
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Θα πρότεινα να χρησιμοποιήσεις τον κώδικα:

Κώδικας:
Private Sub cmdSearch_Click()
'Αναζήτηση
    Dim totRows As Long, i As Long, j As Long

    totRows = Worksheets("Data").Range("A2").CurrentRegion.Rows.Count

    If OptionButton1.Value = True Then          'αναζήτηση ονόματος
        For i = 2 To totRows
            If Trim(Φύλλο1.Cells(i, 1)) = Trim(TextBox1.Text) Then
                For j = 1 To 4
                    Me.Controls("TextBox" & j) = Φύλλο1.Cells(i, j)
                Next
                Exit Sub
            End If
        Next
        
        MsgBox "Το όνομα δεν αντιστοιχεί" _
             & vbLf & "με τη λίστα της βάσης δεδομένων!", vbInformation, "Αναζήτηση εγγραφής"
        Me.TextBox1.SetFocus

    Else                                    'αναζήτηση τηλεφώνου
        For i = 2 To totRows
            If Trim(Φύλλο1.Cells(i, 2)) = Trim(TextBox2.Text) Then
                For j = 1 To 4
                    Me.Controls("TextBox" & j) = Φύλλο1.Cells(i, j)
                Next
                Exit Sub
            End If
        Next

        MsgBox "Ο αριθμός κινητού δεν αντιστοιχεί" _
             & vbLf & "με τη λίστα της βάσης δεδομένων!", vbInformation, "Αναζήτηση εγγραφής"
        Me.TextBox2.SetFocus
    End If

End Sub
Απάντηση με παράθεση
  #3  
Παλιά 01-11-17, 21:08
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-04-2013
Μηνύματα: 253
Προεπιλογή

Γιώργο Σε' Ευχαριστώ πολύ.
Δούλεψε Τέλεια!
Απάντηση με παράθεση
  #4  
Παλιά 01-11-17, 22:30
Το avatar του χρήστη 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
Προεπιλογή

Καλησπέρα
Γιώργο (gfevran), κάποιες παρατηρήσεις για να βελτιώσεις το έργο σου.

Κατ' αρχήν, ποτέ δεν χρησιμοποιείς
Option Explicit,
στην αρχή μιας module.
Αυτό είναι πολύ κακός προγραμματισμός,
παρ' όλο που η vba επιτρέπει εκτέλεση κώδικα,
χωρίς να γίνεται δήλωση μεταβλητών...

Τώρα επι του προκειμένου:
1
Αν υπάρχει στην λίστα πχ Νικολάου με τηλ 2100000000
και καταχωρήσεις πάλι Νικολάου με τηλ 2100000000, θα το δεχτεί (διπλότυπα...)
Δεν έχεις δηλαδή κάπου στο έργο σου, μια ασφάλεια για να αποτρέπει διπλότυπα.
Θα πρότεινα, να χρησιμοποιήσεις το τηλέφωνο σαν ID
μιας και θα μπορούσαν δυο εξαδέλφια πχ
Νικολάου Ε. Νικόλαος και Νικολάου Ε. Νικόλαος να βρίσκονται στην λίστα
αλλά ποτέ δεν θα έχουν τον ίδιο αριθμό τηλεφώνου.
Τώρα αν στην λίστα υπάρχει φυσικό πρόσωπο
Νικολάου Ε. Νικόλαος με αριθμό 2100000000
και εταιρία με αριθμό 2100000000
(συμβαίνει πολλές φορές να καταχωρούμε εταιρίες και πχ τον υπεύθυνο τάδε με τον ίδιο αριθμό)
θα πρέπει να βρείς άλλο στήριγμα πχ ένα Id καταχωρήσεων, έναν ΑΦΜ κλπ...

2
Αν έχεις Νικολάου με τηλ 2100000000 πχ στην 10η γραμμή
και Νικολάου με τηλ 2101111111 πχ στην 50η γραμμή,
όταν θέλεις να διαγράψεις τον Νικολάου με τηλ 2101111111
δεν θα το διαγράψει αλλά αντ' αυτού θα διαγράψει τον πρώτο.

Υπάρχουν κι άλλα μικρότερα σφάλματα...
Απάντηση με παράθεση
  #5  
Παλιά 03-11-17, 07:44
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-04-2013
Μηνύματα: 253
Προεπιλογή

Καλημέρα Σπύρο,
Σε' Ευχαριστώ για την παρατήρηση, όσο για το Option Explicit
δεν ήξερα ποιο ρόλο παίζει και πότε να το χρησιμοποιήσω, σήμερα έμαθα κάτι καινούργιο
και για να είμαι ειλικρινής τα περισσότερα στο forum τα έχω μάθει από σένα και το Γιώργο
όσο για τη δεύτερη παρατήρηση έχεις δίκιο αλλά δεν ξέρω πως να το κάνω.
Να σε' καλά,
Σε' Ευχαριστώ για το χρόνο σου και το ενδιαφέρον σου.

Φιλικά Γιώργος.
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας



Η ώρα είναι 04:36.