Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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 在用户窗体中输入数据时,将VBA代码转换为A列中的自动序列号_Excel_Vba_Userform - Fatal编程技术网

Excel 在用户窗体中输入数据时,将VBA代码转换为A列中的自动序列号

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

我有一个用户表单,用户可以在其中填写数据,数据将插入C列到Z列。我需要一个代码,无论是在工作表中还是在用户表单中,自动填写序列号,从
BA00860
开始,每次输入数据时,它都会填写a列

我在命令按钮下尝试了下面的代码(单击),我能够从BA00860BA00869)生成序列号,然后从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
中,该序列号将正常工作。