我有一个长度为 1 或 2 个字符的文本列,其中仅包含 0 到 99 之间的数字。
当它只是一个数字字符时,我使用什么(文本)格式以 0 前缀显示它?这意味着“8”显示为“08”,而 23 保持不变“23”。
当字段是数字而不是文本时,我知道如何执行此操作。我需要做的就是在这个数字列的格式字段中输入 00。现在我想在字段是文本时做同样的事情。谢谢。
我有一个长度为 1 或 2 个字符的文本列,其中仅包含 0 到 99 之间的数字。
当它只是一个数字字符时,我使用什么(文本)格式以 0 前缀显示它?这意味着“8”显示为“08”,而 23 保持不变“23”。
当字段是数字而不是文本时,我知道如何执行此操作。我需要做的就是在这个数字列的格式字段中输入 00。现在我想在字段是文本时做同样的事情。谢谢。
=Right("00" & someString,2)
这么简单的事情不需要 VBA。
如果字段是数字,您可以使用类似“00”的格式。用字符串,用纯格式,恐怕没办法。
TextBox
如果将值转换为数值,则可以使用 的文本格式规范。在写ControlSource
:TextBox
=CLng(fieldName)
如果您的字段可以,Null
这将产生错误,您将必须这样做:
=IIf(IsNull(fieldName), Null, CLng(Nz(fieldName)))
仍然是必需的Nz
,因为 VBA 总是评估IIf
.
或者,如果您想在字段为 时显示“00” Null
,只需执行以下操作:
=CLng(Nz(fieldName))
当您在 TextBoxes 或其他 Controls 中使用此类表达式时,请确保 Control 的名称与源列的名称不同;否则你会得到一个产生错误的无限递归。例如,如果列名称是“MyColumn”,则给 TextBox 取一个类似“txtMyColumn”的名称。
从此处的类似问题中,创建以下 VBA 函数:
Function Lpad (MyValue as String, MyPadCharacter as String, _
MyPaddedLength as Integer)
Lpad = string(MyPaddedLength - Len(MyValue),MyPadCharacter) _
& MyValue
End Function
要测试此功能,请在“立即”窗口中键入以下行,然后按 ENTER:
?Lpad("123B","0",6)
参考: http: //support.microsoft.com/kb/210573