Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Επικύρωση δεδομένων με απαρίθμηση σφαλμάτων (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/4278-epikirosi-dedomenon-me-aparithmisi-sfalmaton.html)

gfevran 12-09-16 15:29

Επικύρωση δεδομένων με απαρίθμηση σφαλμάτων
 
1 Συνημμένο(α)
Γεια σας παιδιά
Θέλω να ελέγχω στην περιοχή B2:G12 να καταχωρούνται μόνο αριθμοί
αν από λάθος καταχωρούνται χαρακτήρες να παίρνω μήνυμα και να απαριθμούνται
τα σφάλματα(χαρακτήρες)

Κάπου κάνω λάθος στον κώδικα,
Σ’ αυτό σημείο θέλω τη βοήθεια σας

Ευχαριστώ για όποια βοήθεια

Spirosgr 12-09-16 16:32

Ο κώδικας «διορθωμένος»

Κώδικας:

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 με αφήνει
α «απαγορεύει» να συνεχίσω, αν δεν διορθώσω...
Υποδεικνύει το σφάλμα, το διαγράφει και «περιμένει» να εισάγω σωστή τιμή...

gfevran 12-09-16 19:53

Γεια σου Σπύρο,
Έχεις δίκιο, αυτό που ζητάω είναι ανορθόδοξο αλλά αυτό ακριβώς θέλω.
Δοκίμασα τον κώδικα σου και δούλεψε όπως το ήθελα.
Σ' Ευχαριστώ πολύ.

gfevran 23-09-16 13:17

Καλησπέρα,
Με τη βοήθεια του Σπύρου κατάφερα μέσα σε ένα Message Box,
να παίρνω απαρίθμηση σφαλμάτων.
θα ήθελα κάτι ακόμη αν γίνεται, π.χ. η λέξη σφάλματα 3 στο μήνυμα να εμφανίζεται με κόκκινα γράμματα.

Ευχαριστώ για όποια βοήθεια.

Spirosgr 23-09-16 19:03

Καμία περίπτωση...

Αντί Msgbox, φτιάξε ένα φορμάκι, με την πληροφορία...


Η ώρα είναι 10:57.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2