"Σφάλμα χρόνου εκτέλεσης 5" όταν χρησιμοποιείτε τη συνάρτηση Mid(), Left() ή Right()


Για μια έκδοση του Microsoft Word 97 αυτού του άρθρου, ανατρέξτε στην ενότητα 181102 .

Για μια έκδοση του Microsoft Word 98 αυτού του άρθρου, ανατρέξτε στην ενότητα 181103 .

Για μια έκδοση του Microsoft Word 2000 αυτού του άρθρου, ανατρέξτε στην ενότητα 201979 .

Συμπτώματα


Στη Microsoft Visual Basic for Applications (VBA), όταν χρησιμοποιείτε το Mid(), Right()ή Left() συνάρτηση, ενδέχεται να λάβετε το ακόλουθο μήνυμα λάθους:

Σφάλμα χρόνου εκτέλεσης '5': "μη έγκυρη κλήση διαδικασίας ή όρισμα"

Αιτία


Αυτή η συμπεριφορά παρουσιάζεται όταν το όρισμα "μήκος" για τη δήλωση είναι αρνητικός αριθμός.

Η συνάρτηση Mid() επιστρέφει ένα τμήμα μιας ακολουθίας χαρακτήρων κειμένου, ξεκινώντας από μια θέση του συγκεκριμένου χαρακτήρα. Η σύνταξη της εντολής είναι η εξής

Mid(<string>, <start> [, <length>])
όπου < συμβολοσειρά > είναι η συμβολοσειρά κειμένου για να κάνετε αναζήτηση, < start > είναι η θέση του χαρακτήρα, από τον οποίο θα ξεκινήσει και < μήκους > είναι ο αριθμός των χαρακτήρων που θα επιστραφούν. Εάν έχει καθοριστεί χωρίς όρισμα < μήκους > ή εάν υπάρχουν λιγότερα από < μήκος > χαρακτήρες στο κείμενο, η συνάρτηση επιστρέφει όλους τους χαρακτήρες από τη θέση < start > στο τέλος της συμβολοσειράς.

Προτεινόμενη αντιμετώπιση


Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για επεξήγηση, χωρίς καμία εγγύηση, είτε σιωπηρή είτε ρητή. Αυτό περιλαμβάνει, ενδεικτικά, τις σιωπηρές εγγυήσεις εμπορευσιμότητας ή καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που παρουσιάζεται, καθώς και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία διαδικασιών και τον εντοπισμό σφαλμάτων σε αυτές. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας εξηγήσουν τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας, αλλά δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παράσχουν πρόσθετες λειτουργίες, ούτε θα δημιουργήσουν διαδικασίες για να καλύψουν τις συγκεκριμένες απαιτήσεις σας. Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

290140 Τρόπος εκτέλεσης δείγματος κώδικα για προγράμματα του Office XP από άρθρα της Γνωσιακής Βάσης της Microsoft

Για να επιλύσετε αυτό το ζήτημα, φροντίστε να ελέγξετε το μήκος της συμβολοσειράς, όπως στο ακόλουθο παράδειγμα:

Sub ErrorDoesNotOccur()
Dim Test As String
Dim ReturnText As String

' Empty string, could be passed as an empty dialog
' variable, for example.
Test = ""

' Test the length of the string to ensure
' that subtracting 1 from the length leaves
' at least 1 character.
If Len(Test) - 1 > 0 then
ReturnText = Mid(Test, Len(Test) - 1)
End If

End Sub