You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA 出入库登记单ElseIf判断语句不生效问题排查

问题排查

你代码的核心错误有3个:

  • 条件判断顺序完全错误:第一个If的判断逻辑完全不成立,rng是Range对象,直接和True对比本身就是逻辑错误,且你先写了这个错误判断,直接把条目存在的所有场景都拦截了,后面的ElseIf永远不会触发,这就是你说的新增判断不生效的根本原因。
  • 缺少状态判断逻辑:你没有判断已存在的条目当前是「已借出」还是「已归还」状态,自然没办法区分操作是要写借出时间还是归还时间。
  • 大量使用Select、ActiveCell依赖激活状态的语法,很容易因为用户手动选中单元格导致逻辑混乱。

修正后代码

Sub inout()
    Dim barcode As String
    Dim rng As Range
    Dim lastRow As Long
    
    ' 获取录入的条码
    barcode = Worksheets("Sheet1").Cells(2, 2).Value
    If Trim(barcode) = "" Then Exit Sub ' 空值直接退出
    
    ' 查找条码是否存在
    Set rng = Sheet1.Columns("A:A").Find(What:=barcode, _
        LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
    
    If Not rng Is Nothing Then
        ' 条码已存在,判断状态:假设B列是借出时间,C列是归还时间
        If rng.Offset(0, 1).Value = "" Then
            ' 借出时间为空,执行借出操作,写B列
            rng.Offset(0, 1).Value = Now()
            rng.Offset(0, 1).NumberFormat = "m/d/yyyy h:mm AM/PM"
            rng.Offset(0, 2).ClearContents ' 清空归还时间
        Else
            ' 借出时间不为空,执行归还操作,写C列
            rng.Offset(0, 2).Value = Now()
            rng.Offset(0, 2).NumberFormat = "m/d/yyyy h:mm AM/PM"
            rng.Offset(0, 3).Value = "TOOL CRIB" ' 保留原有登记人逻辑
        End If
    Else
        ' 条码不存在,新增条目
        lastRow = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row + 1 ' 找A列最后空行
        Sheet1.Cells(lastRow, "A").Value = barcode
        ' 写入借出时间
        Sheet1.Cells(lastRow, "B").Value = Now()
        Sheet1.Cells(lastRow, "B").NumberFormat = "m/d/yyyy h:mm AM/PM"
    End If
    
    ' 清空输入框,定位回输入单元格
    Worksheets("Sheet1").Cells(2, 2).ClearContents
    Worksheets("Sheet1").Cells(2, 2).Select
End Sub

逻辑说明

  • 先判断条码是否为空,避免空值执行无效逻辑
  • 优先判断条码是否存在,不存在直接走新增逻辑,写入借出时间
  • 条码存在时,判断借出时间列(B列)是否为空:空则说明是首次借出,写借出时间;非空则说明已经借出,本次是归还操作,写归还时间
  • 去掉了所有不必要的Select操作,直接基于找到的单元格对象操作,不会受手动选中单元格影响

内容的提问来源于stack exchange,提问作者wben113

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:24:03