首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有重复的工具的输入/输出跟踪编码,条形码扫描器总是将文本添加到或不删除文本输入。

没有重复的工具的输入/输出跟踪编码,条形码扫描器总是将文本添加到或不删除文本输入。
EN

Stack Overflow用户
提问于 2015-01-08 17:54:49
回答 2查看 129关注 0票数 0

我试图在Microsoft中生成一个代码,当另一个单元格被填充时,它会将文本放入一个单元格中。

我要找的是,例如,当单元格A被填充时,单元格C被填充,没有OUT。然后,当单元格A被再次填充在下一行或它下面的另一行时,单元格C位于同一行上,而单元格A被填充为IN。

我们希望利用条形码扫描仪来检查工具的进出。我已经想好了如何把条形码扫描到A列

我希望这个过程能一次又一次地重复。

它应该是一个跟踪表,当工具被拿出来,并被放回库存。该文本将不断添加,没有任何删除。我们希望利用条形码扫描仪来检查工具的进出。员工扫描他们的条形码,指示他们,然后他们扫描工具,指示他们正在使用的工具。然后当他们回来的时候,他们再次扫描他们的条形码,然后他们把工具扫描回库存。当然,只要有这个简单的设置,就会导致工具是进进出出的混乱,以及是谁最后使用它,因为我们有一群员工不断地拿着工具进出。这样,我们就可以确定谁最后使用了什么工具,以及它是进入还是退出。

下面是我需要的时间戳编码。

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
Dim B As Range, AC As Range, t As Range

Set B = Range("B:B")
Set AC = Range("A:A")
Set t = Target

If Intersect(t, AC) Is Nothing Then Exit Sub

Application.EnableEvents = False
Range("B" & t.Row).Value = Now
Application.EnableEvents = True
End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-08 18:10:36

这听起来像是一个非常人为的例子,用来问“在VBA中,如何用特定的字符串填充Excel单元格?”

这个问题的答案是:

代码语言:javascript
复制
myRange.Value = "<myString>"

总之,这就是我要解决你的问题的方法:

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngChange As Range
    Dim rngIntersect As Range
    Dim xlCell As Range
    Dim inOut As String

    Set rngChange = Range("A:A")
    Set rngIntersect = Intersect(Target, rngChange)

    If Not rngIntersect Is Nothing Then
        Application.EnableEvents = False
        For Each xlCell In rngIntersect

            If xlCell.Value = "" Then
                inOut = "OUT"
            Else
                inOut = "IN"
            End If


            xlCell.Offset(0, 1).Value = Now
            xlCell.Offset(0, 2).Value = inOut
        Next xlCell
        Application.EnableEvents = True
    End If

End Sub

编辑:

为了回应提问者的评论,以下修改的代码应该解决这个问题:

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngChange As Range
    Dim rngIntersect As Range
    Dim inOut As String

    Set rngChange = Range("A:A")
    Set rngIntersect = Intersect(Target, rngChange)

    If Not rngIntersect Is Nothing Then
        Application.EnableEvents = False

            If rngIntersect.Row = 1 Then
                inOut = "OUT"
            ElseIf rngIntersect.Offset(-1, 2).Value = "OUT" Then
                inOut = "IN"
            Else
                inOut = "OUT"
            End If


            rngIntersect.Offset(0, 1).Value = Now
            rngIntersect.Offset(0, 2).Value = inOut
        Application.EnableEvents = True
    End If

End Sub

Edit2:

使用此方法可在日志中反向循环以确定特定id的以前bookiung状态:

代码语言:javascript
复制
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngChange As Range
    Dim rngIntersect As Range
    Dim xlCell As Range
    Dim scanId As String
    Dim inOutOld As String
    Dim inOut As String

    Set rngChange = Range("A:A")
    Set rngIntersect = Intersect(Target, rngChange)

    If Not rngIntersect Is Nothing Then
        Application.EnableEvents = False

            scanId = rngIntersect.Value

            Set xlCell = rngIntersect

            If rngIntersect.Row = 1 Then
                inOut = "OUT"
            Else
                Do Until xlCell.Row = 1
                    Set xlCell = xlCell.Offset(-1, 0)

                    If xlCell.Value = scanId Then
                        inOutOld = xlCell.Offset(0, 2).Value
                        Exit Do
                    End If

                Loop

            End If

            If inOutOld = "IN" Then
                inOut = "OUT"
            Else
                inOut = "IN"
            End If

            rngIntersect.Offset(0, 1).Value = Now
            rngIntersect.Offset(0, 2).Value = inOut
        Application.EnableEvents = True
    End If

End Sub
票数 0
EN

Stack Overflow用户

发布于 2015-01-08 18:09:56

您可以使用工作表“IF()”公式来代替使用VBA。

代码语言:javascript
复制
=IF(A3="","","OUT")
=IF(A4="","","IN")

要将其分解,这意味着如果单元格A3 = nothing (""),那么在单元格C3中不放任何东西,但是如果单元格A3中有什么东西,那么就放"OUT“。

将第一个公式放在单元格C3中,第二个公式放在C4中。如果工具的用户在单元格A3中输入他们的首字母/名称,那么单元格C3就会说出。直到用户返回该工具并在单元格A4中输入他们的首字母/名称时,单元格C4才会说IN。

希望这个简单的,非VBA的例子有帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27846508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档