Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Αριθμητικό πεδίο σε UserForm
Καλησπέρα σε όλους. Σε μία UserForm έχω ένα txtbox στο οποίο θέλω να εξασφαλίσω ότι θα λαμβάνω μόνο αριθμούς ως καταχώριση και μάλιστα όχι ακέραιους αλλά μέχρι τέσσερα δεκαδικά ψηφία. Το πρόβλημα που μου προέκυψε είναι ότι ανάλογα με τη διάταξη - ρύθμιση ή τη γλώσσα του πληκτρολογίου του χρήστη η υποδιαστολή μπορεί να είναι είτε κόμα είτε τελεία. Στη δεύτερη περίπτωση - της τελείας δηλαδή - γίνεται ο χαμός γιατί κατά την μεταφορά της τιμής από τη φόρμα στο κελί του φύλλου έρχεται αντί για 1,038 η τιμή 1.038 και επειδή πρόκειται για τιμή μονάδας όταν στη συνέχεια πολλαπλασιάζεται με την ποσότητα έχω κάτι αστρονομικά ποσά ως αποτέλεσμα. Υπάρχει κάποια λύση που θα μπορούσατε να προτείνετε; Δημήτρης |
#2
|
Καλημέρα Στο παράθυρο διαλόγου των επιλογών της εφαρμογής, (Κορδέλα > Αρχείο > Επιλογές > Προχωρημένα) Υπάρχει εξ ορισμού, επιλεγμένο το πεδίο να χρησιμοποιεί η excel τα διαχωριστικά του συστήματος. Πρέπει όλοι οι χρήστες, να ξετσεκάρουν το πεδίο αυτό και να ορίσουν στα αμέσως δύο πιο κάτω πεδία, τι θέλουν να χρησιμοποιείται σαν διαχωριστικό δεκαδικών και χιλιάδων. (*βλέπε εικόνες σε Αγγλικά & Ελληνικά) Αυτό λογικά πρέπει να διορθώσει τα πράγματα. Αν δεν διορθωθεί ανέβασε ένα αρχείο να βάλουμε μέσα στον κώδικα (αν χρειάζεται) κάποιο format |
#3
| ||||
| ||||
Καλημέρα! Ο παρακάτω κώδικας: Δεν επιτρέπει την επικόλληση κειμένου από το πρόχειρο. Δεν επιτρέπει την καταχώρηση μή έγκυρου αριθμού στο πεδίο TextBox1. Λαμβάνει υπόψη του της ρυθμίσεις υποδιαστολής για δεκαδικά ψηφία του υπολογιστή. Επιτρέπει την καταχώρηση αρνητικού αριθμού. Κώδικας: Option Explicit Private decSeparator As String Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyV Or KeyCode = vbKeyInsert Then KeyCode = 0 End If End Sub Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If Chr(KeyAscii) = "-" Then If InStr(1, TextBox1.Text, "-") Then KeyAscii = 0 ElseIf Len(TextBox1.Text) Then If TextBox1.SelStart > 0 Then KeyAscii = 0 End If End If Else If Not IsNumeric(Chr(KeyAscii)) Then If Chr(KeyAscii) = decSeparator Then If Len(TextBox1.Text) = 0 Or InStr(1, TextBox1.Text, decSeparator) Then KeyAscii = 0 End If Else KeyAscii = 0 End If End If End If End Sub Private Sub UserForm_Initialize() decSeparator = Application.International(xlDecimalSeparator) End Sub Για να επιστρέψουμε την αριθμητική τιμή του πεδίου TextBox1 στο κελί A1 χρησιμοποιούμε: Κώδικας: If IsNumeric(TextBox1.Text) Then Sheet1.Range("A1").Value = CDbl(TextBox1.Text) Else Sheet1.Range("A1").ClearContents End If Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 17-04-14 στις 13:23. |
#4
| |||
| |||
Καλησπέρα και Χρόνια Πολλά!!! Σήμερα κατάφερα και ασχολήθηκα με τις προτεινόμενες λύσεις. Η ρύθμιση στις επιλογές για τη χρήση διαχωριστικού των δεκαδικών και των χιλιάδων πολύ καλή για εξασφαλιστεί, ότι όλοι οι χρήστες στο Excel θα χρησιμοποιούν ενιαία τα ίδια διαχωριστικά. Για το συγκεκριμένο ζήτημα όμως δεν ήταν αρκετό. Χρειάστηκε να προσθέσω και τον κώδικα για τη καταχώριση έγκυρου αριθμού που λαμβάνει υπόψη και τις ρυθμίσεις υποδιαστολής και έτσι λειτούργησε άψογα. Σας ευχαριστώ πάρα πολύ για τη βοήθεια σας. Φιλικά Δημήτρης |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[VBA] UserForm | gfevran | Excel - Ερωτήσεις / Απαντήσεις | 4 | 12-08-14 00:16 |
[VBA] Userform | gfevran | Excel - Ερωτήσεις / Απαντήσεις | 4 | 22-03-14 15:05 |
Αριθμητικό ποσό ολογράφως. | Ms-Office-Development Team | Access samples - Χρήσιμα αρχεία & παραδείγματα | 0 | 10-11-09 14:03 |
Αριθμητικό ποσό ολογράφως. | Tassos | Access - Ερωτήσεις / Απαντήσεις | 0 | 08-03-09 23:10 |
Η ώρα είναι 08:02.