| Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#1
| |||
| |||
|
Καλησπέρα, Σε μια βάση δεδομένων καταχωρώ ονόματα & τηλέφωνα, Μέσω του TextBox1 & OptionBatton1 αντίστοιχα κάνω αναζήτηση ονόματος και του TextBox2 & OptionBatton2 αντίστοιχα κάνω αναζήτηση με τηλέφωνο, αντίστοιχα αν γίνει λάθος πληκτρολόγηση να παίρνω μήνυμα λάθους, αυτό αντιμετωπίζω είναι στην αναζήτηση με όνομα και με σωστή πληκτρολόγηση παίρνω πάλι μήνυμα λάθους, ενώ αυτό δεν συμβαίνει με αναζήτηση τηλεφώνου. Δεν μπόρεσα να βρω τι κάνω λάθος. Στο σημείο αυτό θα ήθελα τη βοήθεια σας. Παραθέτω συνημμένο. Ευχαριστώ για όποια βοήθεια. |
|
#2
| |||
| |||
|
Καλησπέρα Θα πρότεινα να χρησιμοποιήσεις τον κώδικα: Κώδικας: 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
| |||
| |||
|
Γιώργο Σε' Ευχαριστώ πολύ. Δούλεψε Τέλεια! |
|
#4
|
|
Καλησπέρα Γιώργο (gfevran), κάποιες παρατηρήσεις για να βελτιώσεις το έργο σου. Κατ' αρχήν, ποτέ δεν χρησιμοποιείς Option Explicit, στην αρχή μιας module. Αυτό είναι πολύ κακός προγραμματισμός, παρ' όλο που η vba επιτρέπει εκτέλεση κώδικα, χωρίς να γίνεται δήλωση μεταβλητών... Τώρα επι του προκειμένου: 1 Αν υπάρχει στην λίστα πχ Νικολάου με τηλ 2100000000 και καταχωρήσεις πάλι Νικολάου με τηλ 2100000000, θα το δεχτεί (διπλότυπα...) Δεν έχεις δηλαδή κάπου στο έργο σου, μια ασφάλεια για να αποτρέπει διπλότυπα. Θα πρότεινα, να χρησιμοποιήσεις το τηλέφωνο σαν ID μιας και θα μπορούσαν δυο εξαδέλφια πχ Νικολάου Ε. Νικόλαος και Νικολάου Ε. Νικόλαος να βρίσκονται στην λίστα αλλά ποτέ δεν θα έχουν τον ίδιο αριθμό τηλεφώνου. Τώρα αν στην λίστα υπάρχει φυσικό πρόσωπο Νικολάου Ε. Νικόλαος με αριθμό 2100000000 και εταιρία με αριθμό 2100000000 (συμβαίνει πολλές φορές να καταχωρούμε εταιρίες και πχ τον υπεύθυνο τάδε με τον ίδιο αριθμό) θα πρέπει να βρείς άλλο στήριγμα πχ ένα Id καταχωρήσεων, έναν ΑΦΜ κλπ... 2 Αν έχεις Νικολάου με τηλ 2100000000 πχ στην 10η γραμμή και Νικολάου με τηλ 2101111111 πχ στην 50η γραμμή, όταν θέλεις να διαγράψεις τον Νικολάου με τηλ 2101111111 δεν θα το διαγράψει αλλά αντ' αυτού θα διαγράψει τον πρώτο. Υπάρχουν κι άλλα μικρότερα σφάλματα... |
|
#5
| |||
| |||
|
Καλημέρα Σπύρο, Σε' Ευχαριστώ για την παρατήρηση, όσο για το Option Explicit δεν ήξερα ποιο ρόλο παίζει και πότε να το χρησιμοποιήσω, σήμερα έμαθα κάτι καινούργιο και για να είμαι ειλικρινής τα περισσότερα στο forum τα έχω μάθει από σένα και το Γιώργο όσο για τη δεύτερη παρατήρηση έχεις δίκιο αλλά δεν ξέρω πως να το κάνω. Να σε' καλά, Σε' Ευχαριστώ για το χρόνο σου και το ενδιαφέρον σου. Φιλικά Γιώργος. |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Η ώρα είναι 02:38.


Αλλαγή σε γραμμικό τρόπο
