将文本框值增加一

Increasing Text box value by one

我有一个用户表单,它将显示在 E 列中输入的最后一个值。

这很好,但是我希望用户表单显示最后一个值增加 1,这样用户就不必自己更改值。

例如

"MSA 00-00-0001" <-这是显示的内容,因为这是列中的最后一个值 但是我希望用户表单显示 MSA 00-00-0002

我假设通常您只使用 .Value + 1,但是由于值字段中的连字符和文本,这将不起作用。

您可以 "Cheat" 一点,使用 AutoFill

假设您在单元格 B1 中有 "MSA 00-00-0001",因此您可以使用 AutoFill 向下一个单元格,那么单元格 B2 中的值将是 "MSA 00-00-0002"。现在您可以将TextBox1.value设置为单元格B2,然后清除其中的内容。

代码

Dim Rng As Range

Set Rng = Range("B1")

Rng.AutoFill Destination:=Range(Rng, Rng.Offset(1)) '<-- use AutoFill once cell down

UserForm1.TextBox1.value = Rng.Offset(1).value
Rng.Offset(1).ClearContents ' <-- clear the contents of the added cell

假设您将当前值加载到 msa_string,您可以使用:

newvalue="MSA " & format(1+val(replace(right(msa_string,10),"-","")),"00-00-0000")

如果它并不总是启动 MSA_ 那么你可以这样做:

newvalue=left(msa_string,len(msa_string)-10) & format(1+val(replace(right(msa_string,10),"-","")),"00-00-0000")

使用您的方法,将 msa_string 声明为带有其他声明的字符串,然后:

msa_string=Worksheets("Temp").Range("E1").End(xlDown).Value
critCode.Value = left(msa_string,len(msa_string)-10) & format(1+val(replace(right(msa_string,10),"-","")),"00-00-0000")