vba - 配置作业编号以包含前缀、年、月和下一个序号

标签 vba excel excel-2013 countif

我使用的是 Excel 2013(64 位)。

我目前正在处理用于记录事件的用户表单。但是,我一直无法在 VBA 中计算出如何得出代码,该代码将导致上一行中的下一个可用数字填充用户窗体中的 INC 数字文本框 (ADD_txtSEC_INC_No)(然后相应地更新电子表格)。

结束格式应显示为IncYYYYMM-00000 - 例如:Inc201603-00456(这正是我需要的)

我目前有一个代码(如下)可以显示下一个数字,但它不是所需的格式。 Sample of New form in development

Private Sub UserForm_Initialize()
'** SECURITY INCIDENT NUMBER IN TEXTBOX
'**WORKS

    Me.ADD_txtSEC_INC_No.Enabled = True
    Dim irow As Long
    Dim ws As sw_SecIncidentDetails
    Set ws = sw_SecIncidentDetails

'find last data row from database'
   irow = ws.Cells(Rows.Count, 1).End(xlUp).Row

   Me.ADD_txtSEC_INC_No.Text = ws.Cells(irow, 1).value + 1

End Sub

附加信息 当此表格上线时,我需要让它从以前的号码继续,例如,如果我们当前工作表上的公司号码,在 A 行是 Inc201603-00456 那么我需要你的初始化表单时转到下一个公司编号的代码,例如 Inc201603-00457 我们不能从 0000 开始编号,因为那样会使序列从之前的条目中消失。 抱歉,如果这听起来令人困惑。

B 列中,我用名为 ADD_Date_Recorded_TXT 的文本框填充单元格,该文本框的编码为:

       Me.ADD_Date_Recorded_TXT.value = Format(Now, "dd/mm/yyyy")

我提到这个是因为下面 David 的解决方案似乎将日期格式更改为 mm/dd/yyyy(不明白为什么这样做)——我需要我所有的日期都保留为 dd/mm/yyyy 格式.

我只是想我会在“附加信息”中解决上面的这些问题,而不是单独回复每个问题

最佳答案

我发现使用最后一行来构建新 ID 非常危险。如果第一列未排序,您可能会得到重复的标识符。 所以我会首先搜索第一列中的最大数字,然后递增该数字并最终格式化一个新的标识符:

Private Sub UserForm_Initialize()
'** SECURITY INCIDENT NUMBER IN TEXTBOX
'**WORKS

    Me.ADD_txtSEC_INC_No.Enabled = True
    Dim nextNumber As Long
    Dim nextId As String
    Dim ws As sw_SecIncidentDetails
    Set ws = sw_SecIncidentDetails

   ' get the next record number from the first column
   nextNumber = GetNextRecordNumber(ws.UsedRange.Columns(1))

   ' build the new record id
   nextId = "Inc" & Format(Now, "yyyymm") & Format(nextNumber, "-00000")

   Me.ADD_txtSEC_INC_No.text = nextId

End Sub

Private Function GetNextRecordNumber(source As Range) As Long
  Dim max$, v
  For Each v In source.value
    If InStr(1, v, "Inc") = 1 And v > max Then max = v
  Next
  If max <> Empty Then GetNextRecordNumber = Split(max, "-")(1) + 1
End Function

关于vba - 配置作业编号以包含前缀、年、月和下一个序号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36234613/

相关文章:

excel - 将规则应用于条件格式

vba - 将行从一个 WB 复制并粘贴到另一个,每周使用不同的 WB 名称

excel - 尝试访问字典中的排序列表时出现类型不匹配错误

vba - 将工作表保存到新工作簿中,但使用值而不是引用公式

c# - 导出到 excel 数据时出错 : ' ' , 十六进制值 0x07,是使用 c# 的无效字符

excel - 用“(英制符号)VBA Excel 替换不可打印字符

Excel 公式如果列表中不存在则返回否

sql - Excel 中的 VBA 宏运行 SQL 插入语句

image - vba 电子邮件嵌入图像未显示

vba - 将列公式保留在表标题中