Συμπτώματα
Όταν κάνετε μια προγραμματική αλλαγή στην τιμή ενός κελιού σε ένα φύλλο εργασίας του Microsoft Excel, η τιμή του χιλιοστού του δευτερολέπτου που καθορίζετε στρογγυλοποιείται στο πλησιέστερο δευτερόλεπτο. Αυτό το πρόβλημα παρουσιάζεται όταν ισχύουν οι ακόλουθες συνθήκες:
-
Η αλλαγή που κάνετε αντιστοιχίζει τη μορφή ημερομηνίας VBA ή τη μορφή ημερομηνίας Variant στο κελί.
-
Μπορείτε να κάνετε την αλλαγή προγραμματισμού χρησιμοποιώντας μια μακροεντολή της Visual Basic for Applications ή χρησιμοποιώντας ένα εξωτερικό πρόγραμμα-πελάτη αυτοματοποίησης.
Αυτό το πρόβλημα δεν παρουσιάζεται όταν η αλλαγή που κάνετε αντιστοιχίζει τη μορφή ημερομηνίας ή τη μορφή ώρας στο κελί.
Αιτία
Αυτό το πρόβλημα παρουσιάζεται επειδή το Excel μορφοποιεί εσωτερικά τις συμβολοσειρές ημερομηνιών σύμφωνα με τη μορφή ημερομηνίας και ώρας που καθορίζεται στην καρτέλα τοπικές ρυθμίσεις του στοιχείου " τοπικές ρυθμίσεις και ρυθμίσεις γλώσσας " στον πίνακα ελέγχου. Αυτή η τιμή στρογγυλοποιείται στο πλησιέστερο δευτερόλεπτο. Το Excel εκχωρεί αυτήν την τιμή στο κελί και, στη συνέχεια, υπολογίζει εκ νέου την τιμή για να δημιουργήσει μια νέα τιμή ημερομηνίας για το κελί.
Λύση
Χρησιμοποιήστε μία από τις ακόλουθες μεθόδους για να επιλύσετε αυτό το ζήτημα.
Μέθοδος 1
Μπορείτε να μετατρέψετε την τιμή ημερομηνίας σε μορφή συμβολοσειράς που περιέχει ένα κλάσμα του δευτερολέπτου. Αυτή η τιμή συμβολοσειράς μπορεί να ανατεθεί και να υπολογιστεί ως μορφή ημερομηνίας που διατηρεί τα χιλιοστά του δευτερολέπτου.
Μέθοδος 2
Μπορείτε να χρησιμοποιήσετε την ιδιότητα τιμή2 του αντικειμένου Range για να διατηρήσετε τα χιλιοστά του δευτερολέπτου. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα VBA.
Sub CopyValueUsingVBDate() Dim d As Date d = ActiveSheet.Range("A1").Value ActiveSheet.Range("B1").Value2 = dEnd Sub
Για πρόσθετες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
182812 Περιγραφή της ιδιότητας τιμή2 για το αντικείμενο Range