| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#1
| |||
| |||
|
Καλησπέρα σε όλους. Προσπάθησα να μέταφέρω τη συνάρτηση EOMONTH στην Access αλλά μάλλον δεν έχω γράψει καλά τον τύπο. Βοήθεια??? Function EOMONTH(StartDate#, Optional Months% = 0) As Double EOMONTH = Excel.WorksheetFunction.EOMONTH(StartDate, Months) End Function Ευχαριστώ, Μάρω |
|
#2
| |||
| |||
| |
|
#3
| |||
| |||
|
Μια χαρά είναι Νάσο. Σε ευχαριστώ Μάρω |
|
#4
| |||
| |||
|
Καλησπέρα στην παρέα Μάρω μπορείς να δοκιμάσεις και τον παρακάτω κώδικα: Κώδικας: Public Function EndOfMonth(d As Date) As Integer
EndOfMonth = Day(DateSerial(Year(d), Month(d) + 1, 0))
End Function
|
|
#5
| ||||
| ||||
|
Καλημέρα κι από μένα! H EOMONTH δεν αποτελεί μέλος της Excel.WorksheetFunction() σε εκδόσεις παλαιότερες της 2007 και δεν προτείνεται σε καμία περίπτωση να συμπεριληφθεί στη VBA, στα πλαίσια ενός αυτοματισμού. Ο κώδικας του Γιώργου είναι αυτός που πραγματικά αντικαθιστά την EOMONTH της Excel! που μπορεί να χρησιμοποιηθεί και χωρίς το "Day(..." για να επιστρέψει ημερόμηνία πχ: Κώδικας: Function EndOfMonth(d As Date) As Date
EndOfMonth = DateSerial(Year(d), Month(d) + 1, 0)
End Function
![]() Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#6
| |||
| |||
|
Καλημέρα στην παρέα Η συνάρτηση προσδιορισμού των ημερών ενός μήνα μπορεί να βοηθήσει και στον προσδιορισμό των δίσεκτων ετών. Αυτό μπορεί να γίνει με την ακόλουθη συνάρτηση: Κώδικας: Public Function isDisekto(Etos As Integer) As Boolean
isDisekto = Day(DateSerial(Etos, 3, 0)) = 29
End Function
|
|
#7
| |||
| |||
|
Χαίρομαι όταν φέρνω "ανταγωνισμό" στην ομάδα Την καλησπέρα μου σε όλους Μάρω |
|
#8
|
|
Καλησπέρα στην παρέα Είπα να ανακατευτώ και εγώ στην κουβέντα μιας και αναφέρθηκε το EXCEL. Όπως είπε και ό Τάσος. Η ΕΟΜΟΝΤΗ συνάρτηση του Excel που είναι ενσωματωμένη μόνο από το 2007 και μετά, για τις προηγούμενες εκδόσεις "δεν είναι διαθέσιμη και επιστρέφει το σφάλμα #ΟΝΟΜΑ?, θα πρέπει να γίνει εγκατάσταση και φόρτωση του πρόσθετου Πακέτο Εργαλείων Ανάλυσης" όπως αναφέρει και η βοήθεια. Τώρα για την πλήρη κάλυψη του θέματος η EOMONTH σε όλες τις εκδόσεις του Excel δέχεται δύο παραμέτρους, πράγμα που δεν λαμβάνει υπόψιν η προτεινόμενη EndOfMonth που προτάθηκε. Απ την άλλη βλέποντας το αρχικό ερώτημα μάλλον ψάχνουμε κάτι όπου η δεύτερη παράμετρος να είναι προαιρετική. ![]() Θα έλεγα λοιπόν ότι σε VBA θα πρέπει να χρησιμοποιήσουμε: Κώδικας: Function myEOMONTH(d As Date, Optional m%) As Date myEOMONTH = DateSerial(Year(d), Month(d) + 1 + m, 0) End Function Ελπίζω ότι θα συμφωνήσετε με την προτεινόμενη διόρθωση. Δείτε όμως και το ΥΓ. Τα λέμε Θανάσης ΥΓ και μην ξεχνάτε ότι το Excel (σε όλες τις εκδόσεις του) εσφαλμένα θεωρεί το 1900 σαν δίσεκτο παρόλα αυτά η =EOMONTH("2/2/1900";0) επιστρέφει σωστό αποτέλεσμα ενώ η =myEOMONTH("2/2/1900";0) μας δίνει λάθος 29/2/1900. |
|
#9
| |||
| |||
|
Καλημέρα στην παρέα Θανάση δοκίμασα τη συνάρτηση στο παράθυρο immediate, με ημερομηνία 2/2/1900 και όπως βλέπεις Παράθεση:
Συμφωνώ ότι η λύση που πρότεινα δεν αποτελεί πλήρη προσομοίωση της συνάρτησης EOMONTH. Την παράμετρο για τους μήνες δεν τη θεώρησα σημαντική, αφού μπορούμε να περάσουμε στη συνάρτηση το αποτέλεσμα της συνάρτησης DataAdd που δίνει τη δυνατότητα προσθήκης σε μια ημερομηνία μεγάλης ποικιλίας χρονικών διαστημάτων (μέρες, βδομάδες, μήνες, τρίμηνα, κλπ). Φιλικά/Γιώργος |
|
#10
| |
| Παράθεση:
Έχεις δίκιο Γιώργο. Με παρέσυρε ο Τάσος και αφαίρεσα την Day() Άρα Θα έλεγα myEOMONTH = Day(DateSerial(Year(d), Month(d) + 1 + m, 0)) Τα λέμε Θανάσης ΥΓ Θα έλεγα ότι πρόκειται για ερώτηση VBA και όχι Access ή Excel, άρα μάλλον σε λάθος ενότητα βρισκόμαστε Μήπως θα έπρεπε να μεταφερθεί; |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Η ώρα είναι 04:51.





και αφαίρεσα την Day()
Αλλαγή σε γραμμικό τρόπο
