Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] List separator (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/4948-list-separator.html)

dalavouras 13-07-18 10:06

List separator
 
Καλημέρα,

Εχω ένα αρχεία από αμερική το οποίο αν αλλάξω τα regional settings του Η/Υ δουλεύει κανονικά.
Θέλω όμως να το εντάξω σε ένα άλλο αρχείο που λειτουργεί με τα ελληνικά regional settings.
Το πρόβλημα είναι οτι ενώ το excel και το σύστημα χρησιμοποιούν το ";" ως διαχωριστικό, η VBA μέσα στο excel χρησιμοποιεί το ",". Ετσι η υποδιαστολή και το διαχωριστικό είναι τα ίδια και δημιουργεί θέματα όπου οι λίστες έχουν αριθμούς με δεκαδικά.
Υπάρχει τρόπος να αλλάξω στην VBA το List separator?
Υπάρχει άλλος τρόπος να λύσω το πρόβλημα?
Χρησιμοποιώ Office 365

Ευχαριστώ

stam75 13-07-18 12:31

Καλημέρα, χωρίς να έχω γνώσεις ώστε να σου απαντήσω σίγουρα, μήπως στην vba η υποδιαστολη λειτουργει σαν διαχωριστικο οταν πλαισιώνεται με τα " " ;

dalavouras 13-07-18 14:00

Οχι... Θα το αντιθετο ίσως θα μπορούσε να παίρνει δεκαδικούς αριθμους αν είνει μεσα σε "... Αλλά και αυτό είναι δύσκολο...

Spirosgr 13-07-18 14:37

Καλησπέρα.
Κατ' αρχάς, στην vba, το ερωτηματικό (;),
δεν έχει θέση στις συναρτήσεις, ως διαχωριστικό στα ορίσματα.
Έχουμε πάντα (,) ανεξάρτητα από τοπικές ρυθμίσεις.
Τα δεκαδικά, είναι πάντα της μορφής 5.36 (δηλ. με τελεία) ανεξάρτητα από τοπικές ρυθμίσεις.

Τώρα...
Χωρίς να γνωρίζω τον κώδικα, θα πρότεινα τα εξής:
1
Αν κάποιες τιμές με δεκαδική μορφή, πάνε πχ σε κελιά,
τότε πριν την γραμμή κώδικα που «στέλνει» την x τιμή, κάνε μια μορφοποίηση όπως:
Sheet1.Cells(1,1).NumberFormat="#,##0.00"
Αυτό είναι αριθμός, με δύο δεκαδικά,
διαχωριστικό χιλιάδων (,)----Ναι είναι σωστό
διαχωριστικό δεκαδικού μέρους (.)----Ναι είναι σωστό

2
Χρησιμοποίησε την Cdbl(), για να ορίσεις μια Double ή Single τιμή πχ
Dim x as Double
x=Cdbl(Sheet1.Cells(1,1).Value)
ή
Dim x as Double
x=Sheet1.Cells(1,1).Value
Sheet1.Cells(3,3).Value=Cdbl(x)

Προς το παρόν αυτά και αν δεν έχουμε αποτέλεσμα
(που θα έχουμε... αν εφαρμοστούν σωστά) τα ξαναλέμε...με κάποιο παράδειγμά σου...

dalavouras 16-07-18 09:22

Ευχαριστώ πολύ για την απάντηση.
Το αρχείο είναι δυστυχώς 44mb.
Θα προσπαθήσω να κάνω αυτό που λες χωρίς το διαχωριστικό των χιλιάδων βέβαια γιατι αυτό είναι το προβλημα τώρα... Το πρόγραμμα αντλεί αριθμους απο κελιά και τα βάζει σε διανυσματα με τις τιμες να διαχωρίζονται με ","... Ετσι όταν έχουμε δεκαδικούς είναι σαν να βάζουμε 2 τιμες! ;)
για αυτό ήθελα να δω αν μπορούμε να αλλάξουμε το διαχωριστικό, για να μην χρειαζεται καποια άλλη αλλαγή.

Spirosgr 16-07-18 11:55

1 Συνημμένο(α)
Καλημέρα.
Γράφεις...
«...Το πρόγραμμα αντλεί αριθμους απο κελιά και τα βάζει σε διανυσματα με τις τιμες να διαχωρίζονται με ","...»

Το διαχωριστικό των διανυσμάτων, αν εμφανίζεται ως (,) ποιός το ορίζει;
Κάποιος κώδικας;

Αν ναι, κατά πάσα πιθανότητα, μπορεί να αλλάξει...
Επαναλαμβάνω δεν γνωρίζω τίποτα από το έργο σου...

Το δεκαδικό μέρος των αριθμών, δοκίμασες να το αλλάξεις και από εδώ; (*βλέπε εικόνα)


Η ώρα είναι 05:42.

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


Search Engine Optimization by vBSEO 3.3.2