0
我尝试编写生成三种类型连续代码的代码。生成Uniqe值
如果var1是comp1,串行必须以“AG”开始,它必须看起来像AG160001。 如果var1是comp2,串行必须以“IG”开始,它必须看起来像IG160001。 如果var1是comp3,串行必须以“GC”开头,并且它必须看起来像GC160001。 每次我按下“生成串行”按钮时,它将搜索var1的值,如果它的comp1则生成串行AG160002。
该代码很好用。但是当我运行另一个代码时,运行此代码时出现错误。 错误是上一行: 对象变量未设置(错误91)的Varn =范围。( “A:A”)查找( “GC”,SearchOrder:= xlByRows,SearchDirection:= xlPrevious).Row
Sub IDgen()
Dim LastId As String
Dim NewId As String
Dim var1 As String
Dim varN As Long
Dim wsLVZKpk As Excel.Worksheet
Dim wbLVZKpk As Excel.Workbook
Dim wkb As Excel.Workbook
Dim wks As Excel.Worksheet
Dim objListRows As ListRows
Set awkb = ActiveWorkbook
Set awks = awkb.Sheets(1)
awks.Activate
var1 = Range("perceel").Value
If var1 = "" Then
awks.Activate
MsgBox "select comp"
Exit Sub
End If
LVZKpk = "c:\test.xlsm"
Set wbLVZKpk = Workbooks.Open(LVZKpk)
Set wsLVZKpk = wbLVZKpk.Sheets(1)
If var1 = "com1" Then
wsLVZKpk.Activate
varN = Range("A:A").Find("AG", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastId = Cells(varN, "A").Value
NewId = "AG" & CLng(Mid(LastId, 3)) + 1
awks.Activate
Range("bestand").Value = NewId
wbLVZKpk.Close
ElseIf var1 = "comp2" Then
wsLVZKpk.Activate
varN = Range("A:A").Find("IG", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastId = Cells(varN, "A").Value
NewId = "IG" & CLng(Mid(LastId, 3)) + 1
awks.Activate
Range("bestand").Value = NewId
wbLVZKpk.Close
ElseIf var1 = "com3" Then
wsLVZKpk.Activate
varN = Range("A:A").Find("GC", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastId = Cells(varN, "A").Value
NewId = "GC" & CLng(Mid(LastId, 3)) + 1
awks.Activate
Range("bestand").Value = NewId
wbLVZKpk.Close
End If
Exit Sub
End Sub
该错误表示'.Find'没有返回任何东西。 “其他代码”是否更改活动工作表?我怀疑你只需要完全限定你的'Range'和'Cell'参考。 – Comintern
我改变 VARN =范围( “A:A”)查找。( “股份公司”,SearchOrder:= xlByRows,SearchDirection:= xlPrevious).Row 要 VARN = wsLVZKpk.Range( “A:A”) .Find(“AG”,SearchOrder:= xlByRows,SearchDirection:= xlPrevious).Row – Rafael