2017-10-18 12 views
0

J'ai cherché partout et normalement trouver ma réponse, cependant celle-ci est particulière. Je dois formater une date pour un programme tel qu'il n'a pas de barres obliques dans la date pour écrire dans un chemin de fichier. Je suis en mesure d'obtenir le regarder dans la cellule pour apparaître comme si elle utilise des traits d'union, mais la valeur dans la barre de formule l'affiche toujours avec des barres obliques inverses.Remplacer la barre oblique par un trait d'union dans la date VBA

Par exemple, la date d'aujourd'hui pourrait être tapés dans la cellule A1 comme « 18/10/2017 » et il apparaîtrait dans la cellule, il est entré comme « 18/10/2017 », mais dans la barre de formule et quand je reçois la valeur de cette cellule, il reste 10/18/2017. J'extraire la valeur comme: Range("A1").value

Ci-dessous le code que j'utilise pour essayer de changer la valeur réelle de la cellule.

Range("A1").NumberFormat = "mm-dd-yyyy" 

Ceci a fait exactement ce que je mentionne ci-dessus. Tromper l'utilisateur en pensant qu'ils ont résolu le problème, mais pas vraiment. Alors je pensais bien remplaçons simplement le caractère / ...

Range("A1").value = Replace(Range("A1").value, "/", "-") 

Toujours pas de dés et non ce que je peux trouver sur les interwebs. Désolé si cela a été répondu, j'ai cherché et recherché, même dans la pile

+3

Si vous faites simplement cela pour créer un nom de fichier lors de la sauvegarde, pourquoi ne pas simplement définir le format lorsque vous créez le nom de fichier lui-même? 'FileName = Format (MyRng," MM-JJ-AAAA ")' –

+0

Merci @ K.Davis, mais @stenci avait l'approche que je cherchais. Sans entrer dans trop de détails, j'avais besoin que le format soit avec des traits d'union dans Excel car j'ouvrais ce fichier avec un programme Mitutoyo pour extraire des données. Quand j'utilisais 'Range (" A1 "). Value', il me donnait toujours la date avec'/'plutôt que' -' qui posait problème. Dans ce programme, je construisais un chemin de fichier en utilisant cette variable assignée à 'Range (" A1 "). Value'. – Calderon315

Répondre

0

En utilisant Range("A1").Text au lieu de Range("A1").Value vous obtenez quel que soit le formatage a été appliqué à la cellule.

+0

C'est ce qui a aidé mon problème, merci. Je n'ai jamais pensé à cette solution. – Calderon315

0

Vous pouvez formater la chaîne dans le code

Sub SaveIt() 
    Dim s As String 
    s = Format(Range("A1"), "mm-dd-yy") 
    ActiveWorkbook.SaveAs Filename:="C:\Users\dmorrison\Downloads\" & s & ".xlsm", _ 
          FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 
End Sub 
1

La valeur indiquée dans la barre de formule n'a rien à voir avec la façon dont vous formatez la date dans Excel.

Il s'agit d'un paramètre à l'échelle du système que vous devrez modifier en accédant au Panneau de configuration> Région et langue.

Edit:

Et, comme K.Davis dit dans votre commentaire, vous pouvez simplement utiliser Format(rng, "mm-dd-yyyy") pour nommer les fichiers.