2017-03-24 1 views
0

Si j'ai contenu de la cellule comme le texte: ThyssFormat de cellule du temps Lecture est générale

Je formate cette cellule comme un temps et lu le nom de format à l'aide:

workSheet.Cells [rowNumber, start.Column] .Style.Numberformat.Format

Il retourne une chaîne "[-F400 $] h: mm: ss \ AM/PM"

Dans la cellule du Thyss s'affiche .

Dans la barre Fx, THYSS est affiché.

Tout semble raisonnable et comme prévu.

Cependant, si j'ai un contenu cellulaire comme: 1,7063

Ensuite, je forme cette cellule comme un temps et lire le nom de format à l'aide:

workSheet.Cells [ROWNUMBER, start.Column] .Style.Numberformat.Format

Il retourne une chaîne "général"

Et dans la cellule 16:57:04 est affiché. Dans la barre Fx 01/01/1900 16:57:04 est affiché.

Pourquoi retourne-t-il General?!?!?!?!?!? J'essaie simplement de m'assurer qu'une feuille de calcul à importer n'a pas de format pour les cellules, si elle a un formatage alors je dois informer l'utilisateur pour le corriger, je ne peux pas supprimer automatiquement la mise en forme pour eux.

P.S. Soit dit en passant Si je maintenant le format en général le contenu des cellules sont devenus comme par magie 1,7062962962963

+0

elle a été réglée à un format numérique, car il sera en général jusqu'au numéro mise en forme est appliquée, je crois https://support.office.com/fr-fr/article/Available-number-formats-0afe8f52-97db-41f1-b972-4b46e9f1e8d2 –

+0

@Nathan_Sav Si ce que vous dites s'applique ici, puis une cellule contenant 1.7063 dirait que c'est Numberformat.Format était Time, et le texte (avec le format Time) dirait que Numberformat.Format était General ... Nope, il est défini comme Time ... le problème est si le contenu de la cellule est du texte, puis Numberformat .Format dit [$ -F400] h: mm: ss \ AM/PM mais si le contenu de la cellule est un nombre décimal de 1.7063 alors Numberformat.Format dit General ... erm wtf?!?!?!? –

+0

Je pense que c'est Excel ajustant peut-être. Si vous faites comme test dans le format de l'heure, et faites ce qui suit '? typename (activecell.value), typename (activecell.text) 'vous obtenez' String String' de la même manière qu'à midi 12:00:00 dans la cellule, vous obtenez accessoirement 'Double String', ni l'un ni l'autre d'un type de date. Donc, je dirais que le format numérique est déterminé par la valeur du texte et ajusté en conséquence, si ne peut pas être représenté. Comme '99: 99: 00' respecterait la convention de format (ish) mais retournerait toujours comme entrée de texte. –

Répondre

0

Quelque chose comme cela peut expliquer mes commentaires

Public Function FormatRange(r As Excel.Range) As Variant 

Dim x As Variant 

On Error GoTo eHandle: 

    If r.NumberFormat = "m/d/yyyy" Then 
     x = CDate(r.Text) 
    Else 

    End If 

Exit Function 

eHandle: 

    FormatRange = CStr(r.Value) 
    r.Value = FormatRange 
    r.NumberFormat = "General" 


End Function 
+0

Mais ne vous attendez-vous pas alors à ce que le contenu des cellules de THYSS avec un format Time provoque une erreur et soit signalé comme général, et non comme "[$ -F400] h: mm: ss \ AM/PM"? ... inversement le 1.7063 est converti en un temps et ne provoque pas (apparemment) une erreur mais est signalé comme général, alors qu'en fait il a un format de temps qui lui est appliqué. –