我的下一个序列代码有问题

钓鱼

所以我有这个用户表单,每当它进入该行时,它都会给自己编号,如 1,2,3 等等。

Dim ws As Worksheet: Set ws = ThisWorkbook.ActiveSheet
Dim LastRow As Long, nums As Range
Dim number As Range
Dim NextRow As Long
Dim number As Range
Dim LastItem As Range

LastRow = ws.Range("A:A").find("No.", lookat:=xlWhole, LookIn:=xlValues).Row
NextRow = ws.Range("A:A").find(What:="", After:=Cells(LastRow, 1)).Row
Set number= ws.Range("A:A").find("Number")
Set LastItem = ws.Range("A:A").find("Email")


If Not number Is Nothing Then
    'find the occupied range below the header
    Set nums = ws.Range(number.Offset(1, 0), ws.Cells(LastItem.Count, 1).End(xlUp).Offset(1, 0))
    'populate max. value plus one
    nums.Cells(nums.Cells.Count).Value = Application.Max(nums) + 1
End If

我遇到的问题是,在我的 Excel 工作表上,中间有一些信息,因此 ws.Cells(Row.Count.1) 将不起作用,因为它会一直在底部输入数据。当我第一次点击用户表单上的按钮时,它会在第 5 行输入数据,这很好。但是第二次,它不会转到第 6 行,而是停留在第 5 行并替换数据。我如何设置它可以转到下一行。谢谢你。

西里尔

正如评论中所讨论的,您正在使用偏移量为 1 的固定位置,这将始终是相同的最终位置,例如,3 + 1 是 4,无论您重新运行多少次。

您可以捕获最后一行并利用它,这取决于您是否知道哪一列将包含数据(假设为“A”(columns(1)))。

Dim ws As Worksheet: Set ws = ThisWorkbook.ActiveSheet
Dim LastRow As Long, nums As Range 
Dim number As Range
Dim NextRow As Long
Dim number As Range
Dim LastItem As Range

LastRow = ws.Cells(ws.Rows.Count,1).End(xlUp).Row 'CHANGED
NextRow = ws.Range("A:A").find(What:="", After:=Cells(LastRow, 1)).Row
Set number= ws.Range("A:A").find("Number")
Set LastItem = ws.Range("A:A").find("Email")


If Not number Is Nothing Then
    'find the occupied range below the header
    Set nums = ws.Range(number.Offset(1, 0), ws.Cells(LastRow,1)) 'CHANGED
    'populate max. value plus one
    ws.Cells(LastRow+1,1).Value = Application.Max(nums) + 1 'CHANGED
End If

对您的代码进行了三处更改,以支持查找“A”列中的实际最后一行并利用所述最后一行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章