В некоторых случаях вы можете использовать e.message или e.messages. Но это не работает во всех случаях. В любом случае более безопасным является использование str (e)
try:
...
except Exception as e:
print(e.message)
Исходя из получаемой вами ошибки, проблема заключается в том, что вы пытаетесь преобразовать само значение ReportItems!Textbox6
в удвоенное значение, а не в его значение. Чтобы ссылаться на значение текстового поля, вам нужно ссылаться на него как ReportItems!Textbox6.Value
. Поэтому я полагаю, что ответ, который вам понадобится, объединит ответ Арахмана с этим изменением:
=IIF(CDbl(ReportItems!Textbox6.Value) <= 1.4, "A*",
IIF(CDbl(ReportItems!Textbox6.Value) <= 2.4 AND >= 1.5, "A",
IIF(CDbl(ReportItems!Textbox6.Value) <= 3.4 AND >= 2.5, "B",
IIF(CDbl(ReportItems!Textbox6.Value) <= 4.4 AND >= 3.5, "C",
IIF(CDbl(ReportItems!Textbox6.Value) <= 5.4 AND >= 4.5, "D"
IIF(CDbl(ReportItems!Textbox6.Value) <= 6.4 AND >= 5.5, "E"
IIF(CDbl(ReportItems!Textbox6.Value) <= 7.4 AND >= 6.5, "U", "Error")))))))
Основываясь на редактировании исходного поста, я пропустил другая проблема с выражением. Вы не можете сравнивать такие значения. Вам нужно будет добавить дополнительные ссылки на значение Textbox после AND
.
=IIF(CDbl(ReportItems!Textbox6.Value) <= 1.4, "A*",
IIF(CDbl(ReportItems!Textbox6.Value) <= 2.4 AND CDbl(ReportItems!Textbox6.Value) >= 1.5, "A",
IIF(CDbl(ReportItems!Textbox6.Value) <= 3.4 AND CDbl(ReportItems!Textbox6.Value) >= 2.5, "B",
IIF(CDbl(ReportItems!Textbox6.Value) <= 4.4 AND CDbl(ReportItems!Textbox6.Value) >= 3.5, "C",
IIF(CDbl(ReportItems!Textbox6.Value) <= 5.4 AND CDbl(ReportItems!Textbox6.Value) >= 4.5, "D",
IIF(CDbl(ReportItems!Textbox6.Value) <= 6.4 AND CDbl(ReportItems!Textbox6.Value) >= 5.5, "E",
IIF(CDbl(ReportItems!Textbox6.Value) <= 7.4 AND CDbl(ReportItems!Textbox6.Value) >= 6.5, "U", "Error")))))))
Я почти уверен, что вы говорите, приведите результат, который будет строковым значением A * или B и т. Д. Как удвоенный. Что дает ошибку, нельзя привести к удвоению.
Возможно, вы захотите обернуть разделы reportItems в CDbl (), чтобы привести это число, а затем сравнить его со статическими двойными значениями.
Вы могли бы разыграть поле таким образом, только если его действительно нужно было заменить на двойное для сравнения.
=IIF(CDbl(ReportItems!Textbox6) <= 1.4, "A*",
IIF(CDbl(ReportItems!Textbox6) <= 2.4 AND >= 1.5, "A",
IIF(CDbl(ReportItems!Textbox6) <= 3.4 AND >= 2.5, "B",
IIF(CDbl(ReportItems!Textbox6) <= 4.4 AND >= 3.5, "C",
IIF(CDbl(ReportItems!Textbox6) <= 5.4 AND >= 4.5, "D"
IIF(CDbl(ReportItems!Textbox6) <= 6.4 AND >= 5.5, "E"
IIF(CDbl(ReportItems!Textbox6) <= 7.4 AND >= 6.5, "U", "Error")))))))