私は3つのタイプのシリアルを生成するコードを書こうとしています。Uniqeの値を生成
var1がcomp1の場合、シリアルは「AG」で始まり、AG160001のように見える必要があります。 var1がcomp2の場合、シリアルは「IG」で始まり、IG160001のように見える必要があります。 var1がcomp3の場合、シリアルは「GC」で始まり、GC160001のように見える必要があります。 "generate serial"ボタンを押すたびに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")を変更して下さい。( "AG" SearchOrderを:= xlByRows、SearchDirection:= xlPrevious).Row VARN = wsLVZKpk.Range( "A:A")に、 .Find( "AG"、SearchOrder:= xlByRows、SearchDirection:= xlPrevious).Row – Rafael