Εμφάνιση ενός μόνο μηνύματος
  #7  
Παλιά 20-10-12, 00:47
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλησπέρα σε όλους!

Έχετε δίκιο Θανάση και Φώτη.
Και εγώ ήμουν και είμαι της γνώμης (και το έχω αναφέρει αρκετές φορές στο φόρουμ) ότι η Indirect() δεν είναι ότι καλύτερο ειδικά σε πολλά δεδομένα.

Την πρότεινα (λάθος μου) επειδή αυτή μου ήρθε πρώτη στο μυαλό και επειδή υπέθεσα ότι επρόκειτο για 50-100 γραμμές.

Αν όμως πρόκειται για πολλές χιλιάδες δεδομένα, ίσως πρέπει να αποφύγει κανείς τους τύπους για να ελαττώσει τους υπολογισμούς
της εφαρμογής και να αυξήσει την απόδοση της,

Ενδεικτικά, αν αντί για τύπους καταχωρηθούν σταθερές με VBA, o χρόνος που θα χρειαστεί για 500.000 κελιά σε ένα μέσο υπολογιστή είναι κάτω από 5 δευτερόλεπτα με αποτέλεσμα να μειωθούν δραματικά οι χρόνοι ανοίγματος, υπολογισμού και αποθήκευσης του αρχείου.

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

Στο παράδειγμα αυτό:

Τα ονόματα των μηνών της Ελληνικής εμφανίζονται στην γενική πτώση (με χρήση Πίνακα (Array) και της συνάρτησης ChrW() στη VB)

Οι ημέρες εμφανίζονται στα ελληνικά με χρήση του παρακάτω Βρόχου επανάληψης:
Κώδικας:
    For i = 1 To 7
        GreekDayNames(i) = WorksheetFunction.Text(DateSerial(1, 1, i), "[$-408]dddd")
    Next
Έχω επίσης προσθέσει τη συνάρτηση GetVbChar() που μας διευκολύνει να αντικαθιστούμε
τα ελληνικά μέσα στον VBE (απαραίτητο σε μη ελληνικούς υπολογιστές).

Συμπληρώστε ας πούμε 500.000 δεδομένα και κάντε τις δοκιμές σας.

Καλό ξημέρωμα!

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm XLnDayOfMonthVBA.xlsm (37,6 KB, 44 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 20-10-12 στις 00:57.
Απάντηση με παράθεση