如何在VBA中取Bookings与Archive工作表A列最大值+1生成新ID
解决VBA取两个工作表列最大值的问题
你的错误在于工作表引用格式错误,代码里的Bookings!,A:A多了个逗号,而且直接用Range跨表引用的方式不对。下面是正确的修改方案:
核心修改点
- 正确引用两个工作表的A列范围:用
Sheets("表名").Range("列范围")的格式分别指定两个表 - 推荐用
Application.Max(比WorksheetFunction.Max容错性更强,遇到非数值内容不会直接报错)来获取两个范围的最大值
修改后的完整代码
' 新增预订将自动从Bookings和Archive表A列最大值+1获取ID序列并填入TB21 ' 若用户在TB22中输入现有ID用于查找/删除,则使用该ID If TextBox22 = "" Then ' 同时取两个工作表A列的最大值,加1后赋值给TextBox21 TextBox21 = Application.Max(Sheets("Bookings").Range("A:A"), Sheets("Archive").Range("A:A")) + 1 Else TextBox21 = TextBox22.Value End If
额外优化说明
- 去掉了原代码里的
Sheet5.Select,VBA中尽量避免使用Select/Activate,直接通过工作表对象引用范围更高效、稳定 - 如果你的Bookings工作表确实对应Sheet5,也可以用
Sheet5.Range("A:A")替代Sheets("Bookings").Range("A:A"),两种写法都有效,用表名更直观
内容的提问来源于stack exchange,提问作者nickC
相关产品推荐
相关产品推荐

