当另一个单元格=" TRUE"

时间:2016-01-19 18:05:31

标签: excel vba excel-vba spreadsheet

我正在做一些课程来完成高级电子表格。

我为销售电子设备的零售商创建电子表格。我有多个工作表设置了客户详细信息表,产品详细信息(有库存和重新订购功能),一个"订单处理屏幕"和一个"订单历史记录屏幕"。在此订单处理屏幕上,用户可以从列表中选择他们的名称,从列表中选择他们想要的产品,然后单击一个注册订单的按钮。

当用户点击注册订单时,它会完全显示在订单历史记录表中,并且在每次点击后都不会被替换。每次购买该产品时,我都会坚持如何将库存减少1个。

我当前的解决方案是,当订单显示在订单历史记录列表上时(在点击宏并从订单处理屏幕中提取详细信息并将其放入订单历史记录列表之后),将产品名称与产品列表中的所有产品名称,当达到匹配时,显示" TRUE"。类似的东西:

IF <TRUE/FALSE cell> = "TRUE"
-1 from <stock number cell>

当新订单进入时,公式会检查其名称,并在产品列表表中找到其库存号并将其减少1.我无法弄清楚如何将数字减少1我的TRUE / FALSE行显示为TRUE。

编辑:以下是一些伴随它的情况图片:

Product List

Order purchase list

1 个答案:

答案 0 :(得分:1)

我的建议是对包含指示产品已更改的单元格的工作表使用Worksheet_Change事件。您的函数查看产品列表为TRUE / FALSE,然后将产品计数减1。 (别忘了将标志重置为FALSE!)

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    '--- example assumes flag indicating product has changed in column B, rows 2-100
    '    and the product count is on the same row as the flag in column G
    Dim productChangeFlag As Variant
    Dim ws As Worksheet

    Set ws = Target.Parent
    If Intersect(Target, ws.Range("B2:B100")) Is Nothing Or IsEmpty(Target) Then Exit Sub

    Application.EnableEvents = False
    For Each productChangeFlag In Target
        If WorksheetFunction.IsLogical(productChangeFlag) And productChangeFlag = True Then
            ws.Cells(productChangeFlag.Row, 7).Value = ws.Cells(productChangeFlag.Row, 7).Value - 1
            ws.Cells(productChangeFlag.Row, productChangeFlag.Column).Value = False
        End If
    Next productChangeFlag
    Application.EnableEvents = True

End Sub
相关问题