我是第一个excel vba应用程序的新手。我的一个用户表单有一个文本框,用户可以在其中输入数据。数据很可能是一个以零开头的数字。我把输入放在一个字符串中,并试图将其格式化为文本,但这两件事我都试图不起作用。如有任何帮助,我们将不胜感激。
以下是我在网上搜索如何在VBA代码中格式化文本后尝试的两件事
txtString.NumberFormat = "@"
txtString.Value = Format(txtString.Value,"'0")
谢谢你的帮助。
更详细的问题:
我的应用程序有15个用户表单和一个包含19张表单的工作簿。前5张表单是用作数据库的excel工作表。有2个工作表是库存数据库(考虑2种不同类型的库存(,有一个跟踪订单的工作表,还有一个跟踪库存产品测试结果的工作表和一个跟踪必须在订单上进行的标签信息的工作表。当生成订单时,用户输入一个包裹标签,该标签可能是一个以零开头的数字。带前导零的条目正确存储在订单数据库中。来自的另一个用户生成必须在产品上显示的标签信息。为此,应用程序显示需要标签的订单,然后当用户选择他们想要生成标签的订单时,应用程序搜索订单数据库以获取要添加到标签上的信息,并将其放置在与生成标签用户表单相关联的模块内的变量中。它以这种方式从每个其他数据库获取数据,以便将所有标签信息放在一起。然后,它将这些变量写入包含标签信息的数据库。当它这样做时,前导零将被剥离。我做了几次搜索来找到实现这一点的方法,我尝试了很多,但似乎都无法实现。我希望用format方法解决这个问题,因为我必须将它与从数据库中提取的其他内容(如%s(一起使用。当我将值存储在具有标签信息的工作表中时,会剥离前导零。无论我是从变量还是直接从订单工作簿设置标签工作表中的单元格,前导零都会被去除。
谢谢!
假设您的输入是一个字符串。将字符串转换为可以使用的值。计算在不一致的情况下在前面加多少个零。
Sub PrecedingZeros()
Dim strng As String
Dim lng As Integer
Dim fmt As String
Dim i As Integer
With Selection
strng = .Value
lng = Len(strng)
.NumberFormat = "@"
fmt = "0"
If lng >= 2 Then
For i = 2 To lng
fmt = fmt + "0"
Next i
End If
.NumberFormat = fmt
.Value = CSng(strng)
End With
End Sub
所有
谢谢你的帮助。我最后准备了一个"每次我设置内部变量时,都会将其转换为文本字符串,从而将前导零保留在适当的位置。这很有效,所以我放弃了格式的想法。
再次感谢!
Bruce