Я работаю над книгой, в которой есть заданное количество вычислений шаблона, которые используются несколько раз в рамках скопированной книги. Был создан объект формы, где пользователь должен ввести идентификатор для каждого набора вычислений, который соответствует определенному формату. Обычно он следует за «aaa-##0.00», где «aaa» — это строка из 1–3 букв. Затем в форме есть поле со списком, которое очищается и заполняется при активации и содержит 258 предоставленных клиентом текстовых возможностей (для уменьшения вероятной ошибки пользователя) с текстовым полем рядом с ним для ввода цифр. При нажатии кнопки «Выполнить» он идентифицирует выбранные вычисления, требуемые от пользовательской формы, копирует рабочий лист (листы) шаблона в конец рабочей книги и заполняет информацию об идентификаторе внизу списка на странице «Содержание». Вот соответствующий код:
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» и «prefix», выглядят удовлетворительно, при этом LocMP является числом, а «prefix» — строкой желаемого формата. Отсюда я пробовал несколько разных вариантов. Первый,
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», что в точности соответствует ожидаемому. Когда для LocMP введено значение 555,44, результат в измененной ячейке будет «36FE-#0,00», тогда как желаемый результат будет «SFE-555,44»! Я искал на этом сайте (и других) даже приблизительное решение, которое я мог бы подогнать, и сайт MSDN совсем не помогает. Любая помощь будет принята с благодарностью!
E- followed by atleast one "0" character (in format code), displays the number in scientific notation
14.07.2015