VBA - Access - Obtenir le dernier jour du mois
J'ai besoin de votre aide. Je veux obtenir le dernier jour du mois. Eh bien c'est mon code, mais si je veux le débogage et de compilation à la base de données qu'il dit qu'il a une erreur dans la syntaxe.
S'il vous plaît aider =)
Public Function GetNowLast() As Date
Dim asdfh As Date
asdfh = DateValue("1." _
& IIf(Month(Date) + 1) > 12, Month(Date) + 1 - 12, Month(Date) + 1) _
&"."&IIf(Month(Date)+1)>12 , Year(Date)+1,Year(Date))
asdf = DateAdd("d", -1, asdf)
GetNowLast = asdf
End Function
- Regardez ici. Il donne des fonctions pour faire ce que vous voulez.
- j'ai eu la syntaxe, mais dans la deuxième ligne, on me dit que mon argument n'est pas facultatif
- en gros pour ce que vous voulez, vous avez seulement besoin d'une seule ligne dans votre fonction:
GetNowLast = Format(DateSerial(Year(Date), Month(Date) + 1, 0), "d")
Cela vous donnera une réponse de 31 de ce mois, puis, quand nous entrons novembre, il donnera à 30 et ainsi de suite. - ouais mais l'année 1900 😀
- Si vous souhaitez que la date complète ensuite supprimer le formatage
GetNowLast = DateSerial(Year(Date), Month(Date) + 1, 0)
. Je pensais que vous vouliez le dernier jour seulement. Désolé. - merci bro 🙂
- Content d'avoir pu aider
asdf
<>asdfh
Vous devez vous connecter pour publier un commentaire.
GD Linuxman,
Nous allons concentrer sur l'obtention du résultat...:-)
Voir aussi: ici
Le commentaire de @Scott Craner est sur place ! Bien que strictement parlant, il n'est pas nécessaire d'utiliser la mise en forme. (En supposant que vous voulez travailler avec le 'Date' objet)
À réaliser ce que vous voulez, le programme d'installation de la fonction comme ci-dessous:
Vous pouvez appeler la fonction dans votre code comme:
Alternativement, et plus propre est possible de:
Vous pouvez appeler cette fonction et lui passer un paramètre d'entrée.
Voir aussi cette solution élégante par @KekuSemau
Option Explicit
en haut de chaque module va vous aider à vous rappeler de le faire! (Mais il est intéressant de noter quedMonth + 1
fonctionne même sidMonth+1=13
.)Je réalise que c'est un peu tard dans la conversation, mais il est déjà disponible en fonction de feuille de calcul qui donne à la fin de mois, date, EoMonth().
Le coller dans la Fenêtre d'exécution:
Sera de retour le dernier jour du mois en se basant sur la date du jour.
Comme un UDF, il est logique de lui donner un Argument par défaut:
Si vous lui donnez des Arguments, assurez-vous qu'ils sont Date de Littéraux (c'est à dire Fermé avec #s)
Noter la sortie Type de Données est Chaîne (pas Date) et que le format de la date peut être modifiée en fonction des besoins (Ex: "mm/dd/yyyy" au lieu de "dd").
Si le Date Type de Données est nécessaire, utiliser:
J'espère que ça aide quelqu'un.
Dans Access VBA, vous pouvez appeler Excel
EOMonth
fonction de feuille de calcul (ou presque tout de Excel feuille de calcul les méthodes de) est par la liaison à une application Excel objet et unWorksheetFunction
de l'objet, ce qui peut être accompli de plusieurs façons.Appelant les fonctions d'Excel avec un Retard Lié objet
Le plus court de la méthode à partir d'Access VBA est avec une seule ligne de code à l'aide d'un objet tardive. Cet exemple renvoie la date du dernier jour du mois en cours:
Une méthode plus détaillée, en fonction:
Un problème avec la fin des références liées est que VBA prend une seconde pour lier l'objet à chaque fois que la fonction est appelée. Ceci peut être évité en utilisant une liaison anticipée.
Appelant les fonctions d'Excel avec un objet Lié au plus Tôt
Si la fonction est d'être utilisé à plusieurs reprises, il est plus efficace pour aller avec la Liaison Anticipée et de conserver l'objet entre les appels, par exemple:
Aller Outils > Références et ajouter une référence à "
Microsoft Excel x.xx Object Library
" (utiliser quel que soit le nouveau numéro de version, c'est que vous avez installé).Ajouter ce code dans un nouveau module:
La création d'un
WorksheetFunction
objetSi Excel fonctions de feuille de calcul doivent être utilisés beaucoup tout au long de votre code, vous pouvez même créer un
WorksheetFunction
objet de simplifier les appels. Par exemple, ce pourrait être un moyen simple de joindre plusieurs chaînes avecTEXTJOIN
, ou d'obtenir une réponse à partir d'une API avecWEBSERVICE
:Notez que ces fonctions peuvent nécessiter des Excel 2016+ ou Excel 365 (aka: la Bibliothèque d'Objets 16.0+.)