в противном случае, если инструкция для регистрации заезда / отъезда vba не работает

#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. отмечено, я попробую это