首页 > 解决方案 > 使用用户表单对零件编号进行排序

问题描述

我是 VBA 或编程的新手。现在我正在为使用 Excel 的用户表单输入过程数据的制造站点开发一个宏。我希望这个宏做的一件事是自动为每个进程创建运行编号。我们使用的运行编号语法如下:

V1.yy.mm.dd-1

V1.yy.mm.dd-2

V1.yy.mm.dd-3

前 V1.20.04.29-1

我尝试设置运行编号创建的方式是,当我从 ComboBox 中选择一个项目时,零件编号会创建到 TextBox 中,以便稍后提交到相应的数据库中。我不确定如何在 Prefix = V1.yy.mm.dd- 之后创建一个序列,我尝试使用 CountIf 应用程序来计算电子表格中具有相同日期的前缀数以进行排序,但似乎功能不适用于部分匹配。我尝试使用以下内容,但无法正常工作。我相信有更简单的方法可以做到这一点,你能给我一些建议吗?谢谢

这是我到目前为止写的代码:

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

标签: excelvba

解决方案


有几种方法可以解决这个问题,但我想说最简单的方法是将递增的运行编号放在工作表某处的单独单元格中(如果需要,也可以放在另一个单元格中)以供每次参考。

例如:

当数据输入到您的“数据库”表中时,将运行值写入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

推荐阅读