2010-09-14 2 views
0

Я пытаюсь отформатировать число как валюту в Access VBA.Функция форматирования функции vba тип ошибки несоответствия

В ближайшем окне, когда я вхожу:

? Format(123, "Currency") 

Я получаю ожидаемый ответ: "$ 123,00"

Однако в окне кода, когда я вхожу:

Debug.Print Format(123, "Currency") 

Я получаю сообщение об ошибке, указывающее на эту строку: «Ошибка времени выполнения« 13 »: несоответствие типа«

Почему? s тот же самый простой код работает в непосредственном окне, но выдает ошибку при запуске из окна кода?

ответ

1

Я не понимаю, почему ваш второй пример должен вызвать ошибку. Следующие подпрограммы компилируется и выполняется без ошибок на моей системе Access 2003:

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

Попробуйте эту подпрограмму в новую базу данных. Возможно, ваша текущая база данных повреждена.

См Тони Toews' Corrupt Microsoft Access MDBs FAQ

+0

Я пробовал это в новой базе данных, и это сработало. Как я могу точно сказать, повреждена ли моя база данных? Другой код выполняется правильно. – LFurness

+0

Перейдите по ссылке, которую я добавил для получения подробной справочной информации. Во-первых, я бы сделал резервную копию базы данных. Затем попробуйте Compact & Repair ... если проблема исчезнет, ​​вы знаете, что она была повреждена. Если Compact & Repair не исправляет вас, вы можете попробовать декомпилировать. Но я думаю, что я могу просто импортировать все, что вы хотите сохранить из старой базы данных, в новую новую базу данных. – HansUp

+1

Также проверьте ссылки на проект в редакторе VBE. Странные вещи случаются с отсутствующими/сломанными ссылками, хотя ваша проблема на самом деле не является симптомом, который я заметил раньше. Это не помешает проверить. – HansUp

0

Что вы имеете в виду по коду окна?

Это работает:

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

End Sub 
0

В окне отладки, вы просто не использовать Debug.
Print эквивалентно ?
Так Debug.Print Format(123, "Currency") в коде должны быть
Print Format(123, "Currency") в отладочном окне или ? Format(123, "Currency")

Смежные вопросы