【发布时间】:2021-05-03 05:21:16
【问题描述】:
这是我在这个平台上的第一篇文章,希望能得到一些帮助。我是 excel VBA 的新手,所以如果我没有使用适当的行话或语言,请原谅我!
我正在开发一个使用 excel VBA 的库存管理系统。它依赖于检索每个 SKU 的当前库存的用户表单。更新者从 4 种类型的数量更新中进行选择,其中包括:
a) 拣货清单(为项目提取的库存), b) 进货(收货), c) 退货(未从项目中使用的剩余/余额 SKU) d) 物品转移(SKU 从一个仓库转移到另一个仓库)
流程如下:
- 工作人员启动库存更新。
- 填写与更新类型相关的详细信息(例如,领料单将链接到项目任务号等)
- 使用相关 SKU、仓库和数量更新必要的更新类型
- 在将数字提交到相应的 Excel 表之前确认数量
- 提交后,信息将连接到相应的 Excel 表,工作人员可以在其中 a) 保存为 PDF 以供归档,b) 执行命令,根据各自的 SKU。这也已由 VBA 编码,但是,在更新两个仓库的 SKU 数量时,我遇到了问题。
我面临的问题:
我使用 Dim 作为范围来建立我的变量(例如 rng1、rng2、rng3、cell1、cell2、cell3)。用4个变量(rng1,rng2,cell1,cell2)执行宏没有问题,但是在引入rng3和cell3时,宏出现循环问题。
Sub VosToNetTransfer()
MsgBox "Transferred product(s) to NETLINE successfully!"
Dim rng1, rng2, rng3, cell1, cell2, cell3 As Range
Dim lastRow1 As Long
lastRow1 = Sheets("VosToNet").Range("A" & Rows.Count).End(xlUp).Row
Set rng1 = Worksheets("VosToNet").Range("B13:B" & lastRow1)
Dim lastrow2 As Long
lastrow2 = Sheets("InventoryMaster").Range("A" & Rows.Count).End(xlUp).Row
Set rng2 = Worksheets("InventoryMaster").Range("A4:A61" & lastrow2)
Dim lastrow3 As Long
lastrow3 = Sheets("InventoryMaster").Range("A" & Rows.Count).End(xlUp).Row
Set rng3 = Worksheets("InventoryMaster").Range("A65:A87" & lastrow3)
For Each cell1 In rng1
If IsEmpty(cell1.Value) Then Exit For
For Each cell2 In rng2
If IsEmpty(cell2.Value) Then Exit For
For Each cell3 In rng3
If IsEmpty(cell3.Value) Then Exit For
If cell1 <> cell2 Then Exit For
If cell2 <> cell3 Then Exit For
If cell3 <> cell1 Then Exit For
If cell2 = cell1 Then
cell2.Offset(0, 2) = cell2.Offset(0, 2) + cell1.Offset(0, 2)
cell3.Offset(0, 2) = cell3.Offset(0, 2) - cell1.Offset(0, 2)
End If
Next cell3
Next cell2
Next cell1
End Sub
这是我用于尝试将数量从一个仓库转移到另一个仓库的当前代码。但是,它不起作用。
基本上,我的 rng1 是更新表上的 SKU 代码,rng2 是主表上的 SKU 代码。当 cell1 与 cell2 匹配时,该特定数量会减去/加上 .Offset。但是,我的局限性在于我正在使用 SKU,其中一些在两个仓库中都可用,因此在更新两个仓库的数量时,假设我认为我必须为另一个仓库的 SKU 代码建立另一个 rng3 .如何使用单个命令按钮更新不同仓库的数量?另外,如何根据更新表将数量从一个仓库转移到另一个仓库?
如果您需要更多说明,我将能够提供尽可能多的支持细节/图片。
TLDR;我希望能够建立第三组变量(rng3,cell3),这样; 当 cell1 = cell2 时,然后从 rng2 中的 SKU 中相应地减去/添加。 当 cell2 = cell3 时,则从 rng3 中的 SKU 中相应地减去/添加。
提前谢谢你!
【问题讨论】:
-
您的代码存在多个问题。更重要的是,很难理解代码应该做什么。尝试在传输之前和之后添加工作表的图像,并以代码为重点。
-
您好,不幸的是,我也不完全确定某些代码应该做什么。所有这些都是从网上各种论坛帖子中提取的。用外行的话来说,如果 cell1 = cell2,我希望 cell1 的 .Offset(0, 2) 与 cell2 的 .Offset(0, 2) 相加/减去,以及 cell1 的 .Offset(0, 2) 相加/如果 cell1 = cell3,则从 cell3 的 .Offset(0, 2) 减去/减去。是否可以在同一个潜艇中进行?