我在VBA或编程领域是全新的。现在,我正在为制造站点开发一个宏,该宏使用Excel的用户表单输入过程数据。我希望此宏执行的操作之一是自动为每个进程创建运行号。我们使用的运行编号语法如下:
V1.yy.mm.dd-1
V1.yy.mm.dd-2
V1.yy.mm.dd-3
Ex V1.20.04.29-1
我尝试设置运行编号创建的方式是,当我从ComboBox中选择一个项目时,零件编号将创建到TextBox中,然后提交到相应的数据库中。我不确定在Prefix = V1.yy.mm.dd-之后如何创建序列,我尝试使用CountIf应用程序来对电子表格中具有相同日期的Prefix的数量进行排序,但是似乎功能不适用于部分匹配。我尝试使用以下内容,但无法正常工作。我敢肯定有更简单的方法可以做到,您能给我一些建议吗?谢谢
这是我到目前为止编写的代码:
Private Sub ComboBox1_Change()
If Me.ComboBox1.Value <> "" Then
Dim Prefix As String
Dim mm, dd, yy As String
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("2- V1 Loading (2)")
Dim s As Long
s = 1 + sh.Application.Count(Application.Match(Prefix, Range("B:B"), 0))
mm = Format(Date, "mm")
dd = Format(Date, "dd")
yy = Format(Date, "yy")
Prefix = "V1." & yy & "." & mm & "." & dd & "-"
v1 = "V1." & yy & "." & mm & "." & dd & "-" & "" & s
Me.TextBox6.Value = v1
End If
您可以通过几种方法来解决此问题,但我想说,最简单的方法是将递增的运行号放在工作表上的一个单独的单元格中(如果需要,也可以另一个),以供每次引用。
例如:
将数据输入到“数据库”表中后,将运行值写入ThisWorkbook.Sheets("2- V1 Loading (2)").Range("AZ1")
。
然后在您的代码中像这样检查该值:
Private Sub ComboBox1_Change()
If Me.ComboBox1.Value <> "" Then
Dim Prefix As String
Dim mm, dd, yy As String
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("2- V1 Loading (2)")
Dim s As Long
s = 1 + sh.Range("AZ1").Value
mm = Format(Date, "mm")
dd = Format(Date, "dd")
yy = Format(Date, "yy")
Prefix = "V1." & yy & "." & mm & "." & dd & "-"
v1 = "V1." & yy & "." & mm & "." & dd & "-" & s
Me.TextBox6.Value = v1