#excel #vba
Вопрос:
У меня есть лист Excel, в котором находится форма ввода данных и список регистрации. У меня есть макрос, настроенный для поиска записи, и если она не существует, создайте новую запись со временем проверки, если она существует, она вернет ее со временем. Моя проблема заключается в том, что я пытаюсь проверить запись, которая уже существует. Код просто обновляет время регистрации. Я добавил в код оператор elseif, но, похоже, он ничего не делает. Если бы кто-нибудь мог помочь мне понять, почему это было бы очень ценно.
Sub inout()
Dim barcode As String
Dim rng As Range
Dim rownumber As Long
barcode = Worksheets("Sheet1").Cells(2, 2)
Set rng = Sheet1.Columns("a:a").Find(What:=barcode, _
LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If rng = True Or ActiveCell.Offset(0, 2).Value = True Then
rownumber = rng.Row
Worksheets("Sheet1").Cells(rownumber, 1).Select
ActiveCell.Offset(0, 2).Clear
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Date amp; " " amp; Time
ActiveCell.NumberFormat = "m/d/yyyy h:mm AM/PM"
Worksheets("Sheet1").Cells(2, 2) = ""
Cells(2, 2).Select
ElseIf rng Is Nothing Then
ActiveSheet.Columns("a:a").Find("").Select
ActiveCell.Value = barcode
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Date amp; " " amp; Time
ActiveCell.NumberFormat = "m/d/yyyy h:mm AM/PM"
Worksheets("Sheet1").Cells(2, 2) = ""
ActiveCell.Offset(0, 3).Select
ElseIf rng = True Then
rownumber = rng.Row
Worksheets("Sheet1").Cells(rownumber, 1).Select
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = Date amp; " " amp; Time
ActiveCell.NumberFormat = "m/d/yyyy h:mm AM/PM"
Worksheets("Sheet1").Cells(2, 2) = ""
rng.Offset(, 1).Clear
ActiveCell.Offset(0, 2).Value = "TOOL CRIB"
Cells(2, 2).Select
End If
End Sub
Комментарии:
1.
rng
не будетTrue
. ПопробуйIf Not Rng is Nothing
2. идеально! это сработало, хотя, к сожалению, выявило несколько других ошибок
3. Вы столкнетесь с проблемами при использовании
ActiveCell, Select and Activate
. Лучше определить свое местоположение.4. отмечено, я попробую это