我有一个带有文本框和组合框的小型用户表单。工作表中有一个汇总表。我想要的是,当初始化用户窗体时,代码应该通过表格列(凭证#即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
当用户窗体运行时,它不会按顺序计算下一个数字。请回顾并帮助我。
由于
答案 0 :(得分:2)
按行生成序列号的最简单方法是使用Excel函数=row()
,然后使用以下NumberFormat
格式化数字:
"BP\//"000000
Selection.Numberformat = """BP\//""000000"
答案 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