我有一个库存电子表格,其中包含一个交易表,在每一列中详细说明库存“收到”进货或“售出”的日期、描述、数量以及它是“收到”还是“售出”。所有这些信息都会通过我创建的宏在单击按钮时输入到表中。有没有一种使用VBA的方法,如果任何一件库存的价值低于零(由于试图出售没有库存的库存),则可以显示Msgbox,并且可以删除输入到transaction表中的最新信息行?
任何帮助都是非常感谢的。
谢谢。
编辑:
下面是我用来将单元格A4:E4中的数据填充到名为“Table1”的表中的代码。
Sub PlaceOrder()
Dim tbl As ListObject
Dim LastRow As Long
Set tbl = ActiveSheet.ListObjects("Table1")
LastRow = tbl.Range.Rows.Count 'get # of last row
With ActiveSheet
'copy and paste A4
.Range("A4").Copy
tbl.Range(LastRow, 1).Offset(1, 0).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
'copy and paste B4
.Range("B4").Copy
tbl.Range(LastRow, 2).Offset(1).PasteSpecial Paste:=xlPasteFormulas
'copy and paste C4:F4
.Range("C4:F4").Copy
tbl.Range(LastRow, 3).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
'clear value in B4:E4
.Range("B4:E4").ClearContents结尾为
结束子对象
编辑2:这是一个旧的股票交易跟踪器的快照,我正在使用它作为参考,以便创建这个库存电子表格。它将使用很多相同的功能。所以..。我想使用表列"Qty“中与表列"Stock (Exchange:Ticker)”中的值相对应的值来确定商品数量是否低于零。
发布于 2021-07-21 23:58:52
根据你的评论,试试这个版本:
编辑:
Sub PlaceOrder()
With ActiveSheet
Dim tbl As ListObject
Set tbl = .ListObjects("Table1")
Dim LastRow As Long
LastRow = tbl.Range.Rows.Count 'get # of last row
'====== Copy all content `
'copy and paste A4
.Range("A4").Copy
tbl.Range(LastRow, 1).Offset(1, 0).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
'copy and paste B4
.Range("B4").Copy
tbl.Range(LastRow, 2).Offset(1).PasteSpecial Paste:=xlPasteFormulas
'copy and paste C4:F4
.Range("C4:F4").Copy
tbl.Range(LastRow, 3).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
'clear value in B4:E4
.Range("B4:E4").ClearContents
End With
Dim stockList As Variant
Dim qtyList As Variant
stockList = tbl.ListColumns("Stock (Exchange:Ticker)").DataBodyRange.Value
qtyList = tbl.ListColumns("Qty").DataBodyRange.Value
'=== Start checking inventory of all stocks ===
Dim inventoryDict As Object
Set inventoryDict = CreateObject("Scripting.Dictionary")
Dim i As Long
'Get a unique list of stocks
For i = 1 To UBound(stockList, 1)
If inventoryDict.Exists(stockList(i, 1)) Then
inventoryDict(stockList(i, 1)) = inventoryDict(stockList(i, 1)) + qtyList(i, 1)
Else
inventoryDict.Add stockList(i, 1), qtyList(i, 1)
End If
Next i
'Loop through each stock and check if it's < 0
Dim dictItem As Variant
For Each dictItem In inventoryDict
If inventoryDict(dictItem) < 0 Then
'Inventory is negative
MsgBox "Display Message that inventory is not in stock" & vbNewLine & vbNewLine & _
dictItem & ": " & inventoryDict(dictItem)
tbl.ListRows(tbl.ListRows.Count).Delete
Exit For
End If
Next dictItem
End Sub这将执行以下操作:
A4:F4中的数据,并在“股票(交易所:股票代码)”列中输入唯一股票列表中的数据,并对相同股票的数量求和。https://stackoverflow.com/questions/68469940
复制相似问题