来自 UserForm 的自定义数字格式
Custom Number Format from UserForm
我在用户表单中有一个文本框,用户可以在其中输入单位(例如 "kg")。我正在尝试使用这个单位来格式化单元格的数字(在单元格中的值之后添加单位)
Sub Custom_unit()
Dim Cust_un As String
Cust_un = IM_Form1.TextBox1.Value
Selection.NumberFormat = "0" & Cust_un
End Sub
这是我的尝试,但是当我尝试 运行 它时,我收到 运行 时间错误“1004”:无法设置范围 属性 的 NumberFormat class.
如何给 NumberFormat
添加引号
根据文本框的输入,您会得到一个字符串值,例如"kg"。
为了将其用作 NumberFormat 后缀
您需要用引号将单位字符串括起来。
您可以通过分配
Selection.NumberFormat = "0" & """" & Cust_un & """"
或者
Selection.NumberFormat = "0" & Chr(34) & Cust_un & Chr(34)
请注意,VBA 不能将单引号 ("
) 解释为字符串,
也不是包含在开始和结束引号 ("""
) 中的单引号。
你必须在周围的引号中包含一对引号,即 """"
才能理解。
替代方法使用 Chr()
函数
return正在处理一个字符串,其中包含与指定字符代码 34 关联的字符,即双引号字符。
您可能更愿意使用帮助函数来 return 正确的 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
调用示例[=43=]
假设您的 Custom_unit()
过程驻留在 UserForm
代码模块中,使用 Me.TextBox1.Text
来引用当前的用户窗体实例,而不是引用用户窗体的默认实例。调用示例如下:
Sub Custom_unit()
Selection.NumberFormat = getNumberFormat(Me.TextBox1.Text)
End Sub
顺便提一句:在大多数情况下,最好避免选择引用,c.f。 How to avoid using Select in VBA?
我在用户表单中有一个文本框,用户可以在其中输入单位(例如 "kg")。我正在尝试使用这个单位来格式化单元格的数字(在单元格中的值之后添加单位)
Sub Custom_unit()
Dim Cust_un As String
Cust_un = IM_Form1.TextBox1.Value
Selection.NumberFormat = "0" & Cust_un
End Sub
这是我的尝试,但是当我尝试 运行 它时,我收到 运行 时间错误“1004”:无法设置范围 属性 的 NumberFormat class.
如何给 NumberFormat
根据文本框的输入,您会得到一个字符串值,例如"kg"。 为了将其用作 NumberFormat 后缀 您需要用引号将单位字符串括起来。
您可以通过分配
Selection.NumberFormat = "0" & """" & Cust_un & """"
或者
Selection.NumberFormat = "0" & Chr(34) & Cust_un & Chr(34)
请注意,VBA 不能将单引号 ("
) 解释为字符串,
也不是包含在开始和结束引号 ("""
) 中的单引号。
你必须在周围的引号中包含一对引号,即 """"
才能理解。
替代方法使用 Chr()
函数
return正在处理一个字符串,其中包含与指定字符代码 34 关联的字符,即双引号字符。
您可能更愿意使用帮助函数来 return 正确的 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
调用示例[=43=]
假设您的 Custom_unit()
过程驻留在 UserForm
代码模块中,使用 Me.TextBox1.Text
来引用当前的用户窗体实例,而不是引用用户窗体的默认实例。调用示例如下:
Sub Custom_unit()
Selection.NumberFormat = getNumberFormat(Me.TextBox1.Text)
End Sub
顺便提一句:在大多数情况下,最好避免选择引用,c.f。 How to avoid using Select in VBA?