Excel VBA 如何为A列自动生成序列号代码添加B列判断条件
实现方案
要实现仅在B列手动输入公司名称时才生成A列序列号,推荐直接绑定工作表变更事件实现自动触发,无需手动运行宏,完整代码和说明如下:
完整实现代码
右键你要生效的工作表标签,点击「查看代码」,粘贴以下代码即可:
Option Explicit ' 工作表单元格内容变更时自动触发 Private Sub Worksheet_Change(ByVal Target As Range) ' ========== 你需要的B列关联判断条件 开始 ========== ' 仅当修改的是B列单元格、仅修改1个单元格、且输入内容非空时才继续执行 If Target.Column <> 2 Or Target.CountLarge > 1 Or Trim(Target.Value) = "" Then Exit Sub ' 额外增加重复生成校验:对应行A列已经有序号时不覆盖 If Target.Offset(0, -1).Value <> "" Then Exit Sub ' ========== 你需要的B列关联判断条件 结束 ========== ' 原有序列号生成逻辑(已调整为写入B列输入行对应的A列) Dim lastCell As Range Set lastCell = Cells(Rows.Count, "A").End(xlUp) If lastCell.Value = "Request #" Then Target.Offset(0, -1).Value = "ART/QTN001" Exit Sub End If Target.Offset(0, -1).Value = Left(lastCell, 7) & Format(Right(lastCell, 3) + 1, "000") End Sub
如果你仅需要在原有子过程开头加判断
如果不需要自动触发,还是保留手动运行NewSerialNumber的模式,直接在原有代码开头加以下校验行即可:
' 校验下一行要生成序列号的位置对应的B列是否有输入内容 If Trim(Cells(Cells(Rows.Count, "A").End(xlUp).Row + 1, "B").Value) = "" Then Exit Sub
内容的提问来源于stack exchange,提问作者AHMED THAKAA
相关产品推荐
相关产品推荐

