Я работаю над книгой, которая имеет заданное количество шаблонных вычислений, которые многократно используются в объеме скопированной книги. Объект формы был создан, когда пользователь должен ввести идентификатор для каждого набора вычислений, который соответствует определенному формату. Обычно это следует за «aaa - ## 0.00», где «aaa» представляет собой строку от 1 до 3 букв. Затем у формы есть поле со списком, которое очищается и заполняется при активации, которое содержит 258 предоставленных клиентом текстовых возможностей (чтобы уменьшить вероятность ошибки пользователя) с текстовым полем рядом с ним для ввода цифр. Когда нажата кнопка «выполнить», она идентифицирует выбранные вычисления, требуемые из пользовательской формы, копирует лист (ы) шаблона в конец рабочей книги и заполняет информацию идентификатора в нижней части списка на странице «Содержание». Вот соответствующий код:NumberFormat VBA с пользовательскими данными
Dim prefix As String
Dim LocMP As Double
'The digits are entered in txtLocMP
LocMP = Val(txtLocMP.Value)
'mpPrefixLst is the combo box, with 'prefix' being the desired custom format
prefix = mpPrefixLst.Text & "-#0.00"
При отладке, значение, хранящемся в «LocMP» и «префикс» появляется удовлетворительно с LocMP быть числом, а «префикс» быть желаемой строкой формата. Отсюда я попробовал пару различных вариантов. Первые,
With Contents
'Contents is type WorkSheet, locCount is the number of entries in Contents
'including the offset for the header
.Unprotect
'Other unrelated functions
.Range("C" & locCount).Value = Format(LocMP, prefix)
'Other unrelated functions
.Protect
End With
второй,
With Contents
'Other unrelated functions
With .Range("C" & locCount)
.Value = LocMP
.NumberFormat = prefix
End With
'Other unrelated functions
End With
Ни один из этих вариантов, хотя оба они имеют смысл для меня, дают желаемые результаты. Например, если предоставленный текст для «mpPrefixLst» равен «SFE», тогда мое значение «префикс» показывает, что оно равно «SFE- # 0.00», которое в точности соответствует ожидаемому. Когда значение 555.44 вводится для LocMP, результат в измененной ячейке равен «36FE- # 0.00», когда желаемым результатом будет «SFE-555.44»! Я искал этот сайт (и другие) даже для приблизительного решения, которое я мог бы приспособить, а веб-сайт MSDN вообще не помогает. Любая помощь будет принята с благодарностью!
Как я уже сказал в своем редактировании, добавьте обратную косую черту между каждым литералом. http://i.imgur.com/FFRZr5G.png – user1274820