Vba Userform自动填写ID号并减去前面的单词

Vba Userform自动填写ID号并减去前面的单词,vba,userform,Vba,Userform,我创建了一个简单的用户表单,将新设备的详细信息输入到电子表格中的工具列表中,表单工作正常,除了一件小事,那就是新工具ID 基本上,我需要做的是一旦表单被打开/调用,就需要创建新的工具ID,它可以是一组数字字符,比如AA-01234、AA-01235、AA-01236等等 另外,是否有一种方法可以将新添加的工具ID与MsgBox“一条记录添加到客户列表中。新客户ID为” 我所有创建这个的尝试都失败了,并导致了错误,我真的无法理解,因为我是VBA新手,直到现在才使用过它 这是我的代码,客户ID是Te

我创建了一个简单的用户表单,将新设备的详细信息输入到电子表格中的工具列表中,表单工作正常,除了一件小事,那就是新工具ID

基本上,我需要做的是一旦表单被打开/调用,就需要创建新的工具ID,它可以是一组数字字符,比如AA-01234、AA-01235、AA-01236等等

另外,是否有一种方法可以将新添加的工具ID与MsgBox“一条记录添加到客户列表中。新客户ID为”

我所有创建这个的尝试都失败了,并导致了错误,我真的无法理解,因为我是VBA新手,直到现在才使用过它

这是我的代码,客户ID是TextBox1

提前谢谢 [![在此处输入图像描述][1][1] 这是对我有用的代码,但它不能减去单词

Private Sub CommandButton1_Click()
If Application.WorksheetFunction.CountIf(Range("A:A"), Me.TextBox1) > 0 Then
If MsgBox("Tool Name Already Exists.Do you want to continue?", vbQuestion + vbYesNo) <> vbYes Then
Exit Sub
End If
End If

If TextBox1.Value = "" Or TextBox2.Value = "" Or TextBox4.Value = "" Or TextBox5.Value = "" Or TextBox6.Value = "" Then
If MsgBox("Form is not complete. Do you want to continue?", vbQuestion + vbYesNo) <> vbYes Then
Exit Sub
End If
End If
Dim ssheet As Worksheet

Set ssheet = ThisWorkbook.Sheets("2018")
nr = ssheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

ssheet.Cells(nr, 1) = TextBox1.Value
ssheet.Cells(nr, 2) = TextBox2.Value
ssheet.Cells(nr, 3) = TextBox3.Value
ssheet.Cells(nr, 4) = TextBox4.Value
ssheet.Cells(nr, 5) = TextBox5.Value
ssheet.Cells(nr, 6) = TextBox6.Value
ssheet.Cells(nr, 7) = TextBox7.Value

Call resetForm

End Sub

Sub resetForm()
TextBox1.Value = ""
TextBox2.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
Data_Entry.TextBox1.SetFocus

End Sub
Private Sub CommandButton2_Click()
TextBox1.Value = ""
TextBox2.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
Data_Entry.TextBox1.SetFocus
End Sub

Private Sub UserForm_Initialize()

Me.TextBox1 = Application.WorksheetFunction.Max(Range("A:A")) + 1

Me.TextBox3 = Date

End Sub
    Private Sub UserForm_Initialize()
    Me.TextBox1 = Application.WorksheetFunction.Max(Range("A:A")) + 1
    Me.TextBox3 = Date
    End Sub


[1]: https://i.stack.imgur.com/yQABC.jpg
Private子命令按钮1\u单击()
如果Application.WorksheetFunction.CountIf(范围(“A:A”),Me.TextBox1)>0,则
如果MsgBox(“工具名称已存在。是否继续?”,vbQuestion+vbYesNo)vbYes,则
出口接头
如果结束
如果结束
如果TextBox1.Value=“”或TextBox2.Value=“”或TextBox4.Value=“”或TextBox5.Value=“”或TextBox6.Value=“”,则
如果MsgBox(“表单未完成。是否继续?”,vbQuestion+vbYesNo)vbYes然后
出口接头
如果结束
如果结束
将ssheet设置为工作表
设置ssheet=ThisWorkbook.Sheets(“2018”)
nr=ssheet.Cells(Rows.Count,1)。End(xlUp)。Row+1
ssheet.Cells(nr,1)=TextBox1.Value
ssheet.Cells(nr,2)=TextBox2.Value
ssheet.Cells(nr,3)=TextBox3.Value
ssheet.Cells(nr,4)=TextBox4.Value
ssheet.Cells(nr,5)=TextBox5.Value
ssheet.Cells(nr,6)=TextBox6.Value
ssheet.Cells(nr,7)=TextBox7.Value
呼叫重置表单
端接头
附属表格(
TextBox1.Value=“”
TextBox2.Value=“”
TextBox4.Value=“”
TextBox5.Value=“”
TextBox6.Value=“”
TextBox7.Value=“”
Data_Entry.TextBox1.SetFocus
端接头
私有子命令按钮2_单击()
TextBox1.Value=“”
TextBox2.Value=“”
TextBox4.Value=“”
TextBox5.Value=“”
TextBox6.Value=“”
TextBox7.Value=“”
Data_Entry.TextBox1.SetFocus
端接头
私有子用户表单_初始化()
Me.TextBox1=Application.WorksheetFunction.Max(范围(“A:A”))+1
Me.TextBox3=日期
端接头
私有子用户表单_初始化()
Me.TextBox1=Application.WorksheetFunction.Max(范围(“A:A”))+1
Me.TextBox3=日期
端接头
[1]: https://i.stack.imgur.com/yQABC.jpg

我建议不要这样做,因为这是一种很好的方法,一旦你开始(例如)将员工转移到其他工作表,就会意外地重复使用相同的ID。相反,将数字存储在(隐藏)工作表的单元格中,并为每个新员工递增。嗨,蒂姆,这只是一个例子。这是夹具的跟踪表。编号应以ST2018-0178及以上开头。它不会重复,因为年底我将转到新选项卡,从ST2019-001开始。我只需要一个类似于公式Right(Right(N2,LEN(N2)-3))的代码使用
split
。。。快速示例(不对错误进行隔离)
split(Application.WorksheetFunction.Max(Range(“A:A”),“-”(1)+1
我不确定如何使用split函数。你能不能给我提供更多的信息或者给我一个代码。因为您在之前的注释中提供的代码无效。它显示运行时错误9 split函数通过将一个字符串拆分为多个字符串来工作。根据,语法被拆分(表达式、[delimiter、[limit、[compare]]])。表达式是您想要拆分的,例如:“1234单词”。分隔符是希望拆分发生的位置,例如:“-”。限制是它将表达式拆分为多少个字符串,例如:2将生成“1234”和“word”。例如:myVar()=Split(“1234单词”,“-”,2)导致myVar(0)存储“1234”,myVar(1)存储“单词”。