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