Форматирование текстовых полей в форме пользователя

У меня есть Userform, который включает текстовые поля с несколькими форматами. У меня есть Initialize as blank (""), а затем отформатируйте их, используя afterupdate (). Все это прекрасно работает, мои проблемы возникают из-за возможности пропустить пользователя, вводя данные в первую очередь, или просто бесцельно нажав на экран. После ввода значения оно форматирует его правильно, когда вы переходите из текстового поля. Но если вы повторно выбираете текстовое поле, то снова отходите, оно очищает значение. И если вы сделаете это с текстовым полем, которое отформатировано как процент, на самом деле это ошибка с ошибкой несоответствия.

Вот фрагмент моего текущего кода:

Private Sub UserForm_Initialize() ValueAnalysisTextBox.Value = "" CapRateTextBox.Value = "" End Sub Private Sub ValueAnalysisTextBox_AfterUpdate() ValueAnalysisTextBox.Value = Format(Val(ValueAnalysisTextBox.Value), "$#,###") End Sub Private Sub CapRateTextBox_AfterUpdate() CapRateTextBox.Value = Format(Val(CapRateTextBox.Value) / 100, "Percent") End Sub 

Любые мысли о том, как очистить это было бы здорово.

Это то, что вы пытаетесь?

 Private Sub ValueAnalysisTextBox_AfterUpdate() Dim amt As Double amt = Val(Replace(ValueAnalysisTextBox.Value, "$", "")) ValueAnalysisTextBox.Value = Format(amt, "$#,###") End Sub Private Sub CapRateTextBox_AfterUpdate() Dim Perct As Double Perct = Val(Replace(CapRateTextBox.Value, "%", "")) / 100 CapRateTextBox.Value = Format(Perct, "Percent") End Sub 

Примечание . Я не делаю никаких других ошибок. Например, пользователь вводит «Blah Blah» или вставляет что-то еще в текстовое поле. Я уверен, что вы справитесь с этим.

Я бы сохранил базовые значения в свойстве .Tag TextBox, а затем использовал его для изменения форматирования вперед и назад в событиях «Ввод и выезд»:

 Private Sub UserForm_Initialize() ValueAnalysisTextBox.Value = vbNullString ValueAnalysisTextBox.Tag = vbNullString End Sub Private Sub ValueAnalysisTextBox_Enter() ValueAnalysisTextBox.Value = ValueAnalysisTextBox.Tag End Sub Private Sub ValueAnalysisTextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean) If IsNumeric(ValueAnalysisTextBox.Value) Then ValueAnalysisTextBox.Tag = Val(ValueAnalysisTextBox.Value) ValueAnalysisTextBox.Value = Format$(ValueAnalysisTextBox.Tag, "$#,###") Else ValueAnalysisTextBox.Tag = vbNullString End If End Sub 
  • XlsxWriter Python вставляет текстовое поле в диаграмму
  • Управление данными из текстового поля и значений инвертированного дня / месяца
  • Добавление переменного количества символов в строку, основанная на текущей длине строки
  • Удалить строку из текстового поля в слайде PowerPoint из папки - Компонент Error ActiveX не может создать объект
  • Добавление текстовых и текстовых значений в ячейку
  • Текстовое поле VBA на числовое значение
  • VBA - Как я могу дать код ошибки на основе суммы моих значений текстового поля в форме пользователя?
  • Автоматическое заполнение текстового поля в Excel VBA
  • Использование пользовательской формы VBA в Excel 2011 на Mac (запрограммировано в Windows): текстовое поле не работает
  • Стрелка в текстовом поле пользовательской формы, VBA
  • Как получить доступ к текстовому блоку, размещенному на листе в модуле VBA?
  • Давайте будем гением компьютера.