Εμφάνιση ενός μόνο μηνύματος
  #2  
Παλιά 18-08-18, 14:47
kapetang Ο χρήστης kapetang δεν είναι συνδεδεμένος
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Δημήτρη δεν παίρνεις 18 αποτέλεσμα επειδή κάποια στιγμή προκαλείται λάθος και ο κώδικας διακόπτεται.

Έχεις δηλώσει τις μεταβλητές a, b, και c ως Integer.

Αυτό σημαίνει ότι η μέγιστη τιμή τους είναι: 32.768

Στη γραμμή κώδικα L=a*b*c επειδή και οι 3 παράγοντες είναι Integer η VBA θεωρεί και το αποτέλεσμα Integer.

Έτσι όταν το γινόμενο είναι > 32.768 προκαλείται λάθος και ο κώδικας σταματάει.

Μια λύση είναι να γράψεις : L = CLng(a) * b * c, δηλαδή να κάνεις τον ένα παράγοντα τύπου Long.

Καλύτερη και ξεκάθαρη λύση είναι να δηλώνεις όλες τις μεταβλητές a, b, c, L ως Long, ώστε ο τύπος L=a*b*c να μη προκαλεί λάθος.
Απάντηση με παράθεση