使用前缀生成顺序号的代码

时间:2016-04-25 11:53:47

标签: excel-vba vba excel

我有一个带有文本框和组合框的小型用户表单。工作表中有一个汇总表。我想要的是,当初始化用户窗体时,代码应该通过表格列(凭证#即2)并在文本框2中生成下一个数字。

这是我的代码:

Private Sub UserForm_Initialize()

Dim NextNum As Long, prefix As String
Dim i As Long

   prefix = "BPV/"
NextNum = Application.WorksheetFunction.Max(Sheet1.UsedRange.Columns(2))

i = NextNum + 1

Me.TextBox2.Enabled = False
Me.TextBox2.Value = prefix & i

End Sub

当用户窗体运行时,它不会按顺序计算下一个数字。请回顾并帮助我。

由于

3 个答案:

答案 0 :(得分:2)

按行生成序列号的最简单方法是使用Excel函数=row(),然后使用以下NumberFormat格式化数字:

"BP\//"000000

Selection.Numberformat = """BP\//""000000"

enter image description here

答案 1 :(得分:0)

您可能遇到的一个问题是BPV阻止Excel确定最大值。尝试使用以下内容获取当前最大值

.filter('existingMembers', function() {
    return function(users, members) {
        return users.filter(function(user) {

            for (var i in user.id) {

                if (members.indexOf(user.id[i]) != -1) {
                    return;
                }
            }
            return user;

        });
    };
})

答案 2 :(得分:0)

我需要知道你是怎么做到的。但是假设工作表中有一个按钮(Button1)正在调用UserForm。以下代码正在执行类似于您想要实现的内容(我猜......)。

在模块中:

Sub Button1_Click()
    UserForm1.Show
End Sub

在Userform中:

Dim NextNum As Long, prefix As String
Dim i As Long

Private Sub UserForm_Initialize()
    prefix = "BPV/"
    NextNum = Application.WorksheetFunction.Max(Worksheets("Sheet1").Columns(2))
    i = NextNum + 1

    Me.TextBox2.Enabled = False
    Me.TextBox2.Value = prefix & i
    Worksheets("Sheet1").Cells(i, 2) = i
End Sub