
12-09-16, 16:32
|
 | Συντονιστής Όνομα: Σπύρος Τσιλιγιάννης Έκδοση λογισμικού 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
| |
Ο κώδικας «διορθωμένος» Κώδικας: Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim _
rng As Range, _
c As Range, _
WFcnt As Integer
Set rng = Range("B2:G12")
If Not Intersect(Target, rng) Is Nothing Then
For Each c In rng
If Not IsNumeric(c) Then
WFcnt = WorksheetFunction.CountA(Sh1.Range("B2:G12"), c) - _
WorksheetFunction.Count(Sh1.Range("B2:G12"), c) - 1
MsgBox ("Μη έγκυρη καταχώριση, δεν αντιστοιχεί σε αριθμό!" _
& vbLf & "Παρακαλώ πληκτρολογήστε ακέραιο ή δεκαδικό αριθμό.") _
& vbLf & ("") _
& vbLf & ("Σφάλματα: ") & WFcnt, vbExclamation, "Επικύρωση δεδομένων"
Exit Sub
End If
Next c
End If
End Sub Σημείωση:
Θεωρώ, ότι το σκεπτικό, είναι λάθος.
Θα έπρεπε, να απαγορεύεις την εγγραφή μη αριθμητικών τιμών και όχι να τις μετράς...
Παράδειγμα 1.
Με το σκεπτικό σου, γράφω:
4 με αφήνει
15 με αφήνει
32,5 με αφήνει
α μετράει 1 σφάλμα
5 μετράει 1 σφάλμα...κλπ
Παράδειγμα 2.
Με πιο ορθό σκεπτικό, γράφω:
4 με αφήνει
15 με αφήνει
32,5 με αφήνει
α «απαγορεύει» να συνεχίσω, αν δεν διορθώσω... Υποδεικνύει το σφάλμα, το διαγράφει και «περιμένει» να εισάγω σωστή τιμή...
|