2010-09-14 15 views
0

J'essaye de formater un nombre comme devise dans Access VBA.La fonction de format vba génère une erreur d'incompatibilité de type

Dans la fenêtre immédiate, quand je rentre:

? Format(123, "Currency") 

je reçois la réponse attendue: "123,00 $"

Cependant, dans la fenêtre de code, quand je rentre:

Debug.Print Format(123, "Currency") 

Je reçois une erreur pointant vers cette ligne: "Erreur d'exécution '13': incompatibilité de type"

Pourquoi faire s le même code simple fonctionne dans la fenêtre immédiate, mais lance une erreur lors de l'exécution à partir de la fenêtre de code?

Répondre

1

Je ne vois pas pourquoi votre deuxième exemple devrait provoquer une erreur. Les compiles et exécute sous-routine suivante sans erreur sur mon système Access 2003:

Public Sub test_Format() 
    Debug.Print Format(123, "Currency") 
End Sub 

Essayez ce sous-programme dans une nouvelle base de données. Peut-être que votre base de données actuelle est corrompue.

Voir Tony Toews Corrupt Microsoft Access MDBs FAQ

+0

J'ai essayé cela dans une nouvelle base de données et cela a fonctionné. Comment puis-je savoir si ma base de données est corrompue? L'autre code s'exécute correctement. – LFurness

+0

Visitez le lien que j'ai ajouté pour plus de détails. Première chose, je voudrais faire une copie de sauvegarde de la base de données. Ensuite, essayez Compact & Repair ... si le problème disparaît, vous savez qu'il a été corrompu. Si Compact & Repair ne vous corrige pas, vous pouvez essayer de le décompiler. Mais je pense que je pourrais simplement importer tout ce que vous voulez conserver de votre ancienne base de données dans une nouvelle base de données fraîche. – HansUp

+1

Vérifiez également les références de votre projet dans l'éditeur VBE. Des choses étranges se produisent avec des références manquantes/cassées, bien que votre problème ne soit pas vraiment un symptôme que j'ai remarqué auparavant. Cela ne fera pas de mal de vérifier. – HansUp

0

Que voulez-vous dire par fenêtre de code?

Cela fonctionne:

Private Sub Form_Load() 
     Debug.Print Format(123, "Currency") 

End Sub 
0

Dans la fenêtre de débogage, il vous suffit ne PAS utiliser Debug.
Print est équivalent à ?
Ainsi Debug.Print Format(123, "Currency") dans le code devrait être
Print Format(123, "Currency") dans la fenêtre de débogage ou ? Format(123, "Currency")