excel - 使用用户表单对零件编号进行排序
问题描述
我是 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
解决方案
有几种方法可以解决这个问题,但我想说最简单的方法是将递增的运行编号放在工作表某处的单独单元格中(如果需要,也可以放在另一个单元格中)以供每次参考。
例如:
当数据输入到您的“数据库”表中时,将运行值写入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
推荐阅读
- queue - Chronicle Queue cq4 文件大小不正确
- c# - 检查gridview中的日期是否与当前日期匹配
- android - Flutter 安装问题,无法在 PC 中加载或找到主类
- reactjs - reactjs中的离线位置选择器
- android - 我不(知道)使用 ro.serialno,但应用程序因此而崩溃
- php - 根据用户ID从数据库表中获取值
- c# - WPF 组合框项目背景绑定到项目属性
- docker - Rancher 2 Kubernetes 证书已过期并出现错误 x509:证书已过期或尚未生效
- python - Python:使用 UTF-8 以二进制模式打开 PDF
- html - Ag-grid 表中实际行数