Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 每次更改前缀时生成序列号的代码_Excel_Vba - Fatal编程技术网

Excel 每次更改前缀时生成序列号的代码

Excel 每次更改前缀时生成序列号的代码,excel,vba,Excel,Vba,我有一个用户表单,其图像如下所示 还附上了数据输入表图像 命令按钮代码 Private Sub CommandButton1_Click() Dim ws As Worksheet, tbl As ListObject, row As ListRow Set ws = Sheets("Sheet1") Set tbl = ws.ListObjects("Table2") Set row = tbl.ListRows.Add prefix = Me.TextBox1.Value &

我有一个用户表单,其图像如下所示

还附上了数据输入表图像

命令按钮代码

Private Sub CommandButton1_Click()

Dim ws As Worksheet, tbl As ListObject, row As ListRow

Set ws = Sheets("Sheet1")
Set tbl = ws.ListObjects("Table2")
Set row = tbl.ListRows.Add

prefix = Me.TextBox1.Value & "-"

Dim NextNum As Long, LastRow As Long, lRow As Long, myArr() As Long

With Sheets("Sheet1")
    'Find Last Row in Voucher # Column
    LastRow = .Cells(.Rows.Count, "E").End(xlUp).row

    ReDim myArr(1 To LastRow)
    ' read all cells contents and convert them to array of numbers
    For lRow = 5 To LastRow
        If Mid(.Cells(lRow, 5), 4) <> "" Then
            myArr(lRow) = CLng(Mid(.Cells(lRow, 5), 4))
        End If
    Next lRow

    ' find maximum value in array
    NextNum = WorksheetFunction.Max(myArr)
End With
row.Range(1, 1).Value = Me.ComboBox1.Value
row.Range(1, 2).Value = prefix & NextNum + 1
row.Range(1, 3).Value = Me.TextBox2.Value

End Sub
Private子命令按钮1\u单击()
将ws作为工作表,tbl作为ListObject,行作为ListRow
设置ws=图纸(“图纸1”)
Set tbl=ws.ListObjects(“表2”)
设置行=tbl.ListRows.Add
前缀=Me.TextBox1.Value&“-”
Dim NextNum为长,LastRow为长,lRow为长,myArr()为长
附页(“第1页”)
'查找凭证#列中的最后一行
LastRow=.Cells(.Rows.Count,“E”).End(xlUp).row
重拨myArr(1至最后一行)
'读取所有单元格内容并将其转换为数字数组
对于lRow=5至最后一行
如果Mid(.Cells(lRow,5),4)”,则
myArr(lRow)=CLng(Mid(.Cells(lRow,5),4))
如果结束
下一条路
'查找数组中的最大值
NextNum=WorksheetFunction.Max(myArr)
以
row.Range(1,1).Value=Me.ComboBox1.Value
行范围(1,2)。值=前缀和NextNum+1
row.Range(1,3).Value=Me.TextBox2.Value
端接头
当我按下命令按钮时,它将生成带有前缀的序列号。但是我想当前缀被更改时,它应该读取带有该前缀的数字,然后生成下一个数字

样本结果附呈。

@Shai请告知我如何实现这一点……我不了解您的数据流,前缀在哪里更改?工作表还是用户表格?输入的数字在哪里?在文本框1中,需要输入前缀。如Abc-#在输入3或4个条目后,如果我更改前缀,则数字应从1开始。在更改之前和之后,您可以编辑您的帖子,并在工作表中上载数据示例(进行手动模拟并添加屏幕截图)@Shai请告知我如何实现这一点…我不了解您的数据流,前缀在哪里更改?工作表还是用户表格?输入的数字在哪里?在文本框1中,需要输入前缀。如Abc-#在输入3或4个条目后,如果我更改前缀,则数字应从1开始。在更改之前和之后,您可以编辑您的帖子,并在工作表中上载数据示例(进行手动模拟并添加屏幕截图)