VBA 根据最后一个单元格值自动生成序列号的代码
VBA code to serial number auto generation based on last cell value
我在通过在 A 列中添加最后一个单元格值来自动生成序列号时遇到问题。我能够生成序列号,直到 BA00935(通过添加最后一个单元格值 BA00934) 但不理解为什么代码没有生成序列号 BA00936 as in this figure。我什至没有收到任何错误消息。
我如何才能正确使用 row_number 或者是否有其他方法可以达到预期的效果?
我使用以下 VBA 代码通过添加到最后一行来生成序列号。
Private Sub cmdadd_Click()
On Error Resume Next
ActiveSheet.Unprotect
Dim LastRow As Long
'for giving the serial number based on last cell value by adding plus one
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
Range("A" & LastRow).Select
Selection.AutoFill Destination:=Range("A" & LastRow & ":A" & LastRow + 1), Type:=xlFillDefault
Range("A" & LastRow + 1).Select
End With
Pattern_Serial nos
假设字符串的长度始终为 7 个字符并以 5 位数字结尾
Private Sub cmdadd_Click()
On Error Resume Next 'This line skips errors... bad practice unless you really know what you are doing
On Error GoTo 0
Dim LastRow As Long
With Workbooks(REF).Sheets(REF) 'Always refer to the wb/ws, otherwise VBA will refer to the active wb/ws
.Unprotect
'for giving the serial number based on last cell value by adding plus one
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
prfx = Left(.Cells(LastRow, "A"),2) 'Gets the prefix by getting the 2 leftmost characters of the last filled cell
nmbr = Right(.Cells(LastRow, "A"),5)+1 'Gets the last 5 characters, which is the number
'Numbers don't have leading zeroes, so if the string did they have been stripped
'This determines if that happened and if so, it adds as many leading zeroes as the number of characters is shorter than 5
If Len(nmbr) < 5 Then
For i = 1 To (5 - Len(nmbr))
nmbr = "0" & nmbr
Next i
End If
.Cells(LastRow + 1, "A").Value = prfx & nmbr
End With
End Sub
我在通过在 A 列中添加最后一个单元格值来自动生成序列号时遇到问题。我能够生成序列号,直到 BA00935(通过添加最后一个单元格值 BA00934) 但不理解为什么代码没有生成序列号 BA00936 as in this figure。我什至没有收到任何错误消息。
我如何才能正确使用 row_number 或者是否有其他方法可以达到预期的效果?
我使用以下 VBA 代码通过添加到最后一行来生成序列号。
Private Sub cmdadd_Click()
On Error Resume Next
ActiveSheet.Unprotect
Dim LastRow As Long
'for giving the serial number based on last cell value by adding plus one
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
Range("A" & LastRow).Select
Selection.AutoFill Destination:=Range("A" & LastRow & ":A" & LastRow + 1), Type:=xlFillDefault
Range("A" & LastRow + 1).Select
End With
Pattern_Serial nos
假设字符串的长度始终为 7 个字符并以 5 位数字结尾
Private Sub cmdadd_Click()
On Error Resume Next 'This line skips errors... bad practice unless you really know what you are doing
On Error GoTo 0
Dim LastRow As Long
With Workbooks(REF).Sheets(REF) 'Always refer to the wb/ws, otherwise VBA will refer to the active wb/ws
.Unprotect
'for giving the serial number based on last cell value by adding plus one
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
prfx = Left(.Cells(LastRow, "A"),2) 'Gets the prefix by getting the 2 leftmost characters of the last filled cell
nmbr = Right(.Cells(LastRow, "A"),5)+1 'Gets the last 5 characters, which is the number
'Numbers don't have leading zeroes, so if the string did they have been stripped
'This determines if that happened and if so, it adds as many leading zeroes as the number of characters is shorter than 5
If Len(nmbr) < 5 Then
For i = 1 To (5 - Len(nmbr))
nmbr = "0" & nmbr
Next i
End If
.Cells(LastRow + 1, "A").Value = prfx & nmbr
End With
End Sub