Как добавить кавычки в NumberFormat
При вводе из текстового поля вы получаете строковое значение, например, «кг». Чтобы использовать его в качестве суффикса NumberFormat, вам необходимо заключить единичную строку в кавычки.
Это можно сделать, назначив
Selection.NumberFormat = "0" & """" & Cust_un & """"
или, альтернативно,
Selection.NumberFormat = "0" & Chr(34) & Cust_un & Chr(34)
Обратите внимание, что VBA не может ни интерпретировать одну кавычку ("
) как строку, ни одиночная кавычка, заключенная в начальную и конечную кавычки ("""
). Вам нужно вместо этого включить пару кавычек в окружающие кавычки, то есть """"
, чтобы сделать это понятным. В альтернативе используется функция Chr()
, возвращающая строку, содержащую символ, связанный с указанным кодом символа 34, то есть символ двойной кавычки.
Вы можете использовать функцию справки для возврата правильного NumberFormat, например
Function getNumberFormat(ByVal unit As String, Optional NumFmt As String = "0 ") As String
unit = Replace(unit, Chr(34), vbNullString) ' remove existing double quotes
getNumberFormat = NumFmt & Chr(34) & unit & Chr(34) ' build NumberFormat including quotes around unit
' or: getNumberFormat = NumFmt & """" & unit & """"
End Function
Пример вызова
Если ваша Custom_unit()
процедура находится в модуле кода UserForm
, используйте Me.TextBox1.Text
для ссылки на текущий экземпляр UserForm вместо ссылаясь на экземпляр по умолчанию пользовательской формы. Пример вызова может быть следующим:
Sub Custom_unit()
Selection.NumberFormat = getNumberFormat(Me.TextBox1.Text)
End Sub
Кстати, подсказка: в большинстве случаев лучше избегать ссылок на выборки, c .f. Как избежать использования Select в VBA?