Excel 在用户窗体中输入数据时,将VBA代码转换为A列中的自动序列号
我有一个用户表单,用户可以在其中填写数据,数据将插入C列到Z列。我需要一个代码,无论是在工作表中还是在用户表单中,自动填写序列号,从Excel 在用户窗体中输入数据时,将VBA代码转换为A列中的自动序列号,excel,vba,userform,Excel,Vba,Userform,我有一个用户表单,用户可以在其中填写数据,数据将插入C列到Z列。我需要一个代码,无论是在工作表中还是在用户表单中,自动填写序列号,从BA00860开始,每次输入数据时,它都会填写a列 我在命令按钮下尝试了下面的代码(单击),我能够从BA00860到BA00869)生成序列号,然后从BA01861开始,但不是BA00870。请按照我的要求更正我的代码,BA00860。BA00870。BA00880,依此类推 Me.txtId.Value = "BA" & Format(Applicatio
BA00860
开始,每次输入数据时,它都会填写a列
我在命令按钮下尝试了下面的代码(单击
),我能够从BA00860
到BA00869
)生成序列号,然后从BA01861
开始,但不是BA00870
。请按照我的要求更正我的代码,BA00860
。BA00870
。BA00880
,依此类推
Me.txtId.Value = "BA" & Format(Application.Max(Sheets("Tasks").Range("A12:A65536")) + 1, "00860")
ActiveCell.Offset(0, 0).Value = Me.txtId.Value
ActiveCell.Offset(0, 0).NumberFormat = "00860"
请注意,此
.NumberFormat=“00860”
不是有效的数字格式
你可以用公式很容易地做到这一点。假设你的第一个序列号是用A1写的,就像
然后您可以在单元格A2中使用公式=LEFT(A1,2)和TEXT(RIGHT(A1,5)+1,“00000”)
,并将其向下复制以获得以下内容:
在VBA中,可以使用以下内容
Dim LastSN As String
LastSN = Range("A1").Value 'eg BA00860
Dim NextSN As String
NextSN = Left$(LastSN, 2) & Format$(Right(LastSN, 5) + 1, "00000")
根据评论的完整示例:
Sub Test()
Dim LastSN As String
LastSN = "BA00860"
Dim NextSN As String
NextSN = Left$(LastSN, 2) & Format$(Right(LastSN, 5) + 1, "00000")
MsgBox "LastSN was: " & LastSN & vbCrLf & "NextSN is: " & NextSN
End Sub
是的,我理解使用公式,但出于我的要求,它应该从userform生成。我正在尝试使用您编辑的代码,但我将在其中包含“BA”有点混淆,因为代码将“Left$(LastSN,2)作为BA”,因为我没有在ExcelMe.txtId.Value=“BA”和Format(Application.Max(Sheets(“Tasks”).范围内定义任何内容(“A12:A65536”))+1,“00860=>在这行中,我正在清除指示以“BA”开头的内容但这是使用最后一个序列号
LastSN
,它可能类似于BA00860
从中提取BA
,从中提取00860
,并添加+1
,结果是861
,并将它们重新格式化为5位00861
,然后将所有内容合并到BA00861
。您只需需要将要添加的最后一个序列号+1
放入LastSN
中,该序列号将正常工作。