excel - Excel VBA表单,仅当每行中某个单元格中的值大于> 0时如何提交多行
问题描述
我目前正在尝试使用 VBA 代码和一些公式在 Excel 2016 中创建数据条目,使用户能够从下拉列表中选择产品,以自动计算构成产品的每种原材料所需的数量和订单金额。
我的工作簿由 4 张标题为
“iform” -允许用户从下拉列表中选择产品、输入日期和数量的表单。然后表单会自动提取产品的描述。然后在下表中列出了制造该产品所需的所有零件,其中包括手头数量、订单数量、已分配、每 1 个产品所需的数量以及需要多少
"ordermaster" -每当用户从 "iform" 提交表单时,都会使用请求的零件和金额更新空白列表,
“bomitemqty” -包含所有最终产品及其部件的列表。此列表中包含的其他信息:当前手头数量、分配数量和每 1 个最终生产产品所需的数量
“fgmaster” -包含所有最终产品的列表
除了当我从“iform”提交表单时,我 似乎无法让它只将“需要数量”> 0的行发送到“ordermaster”中的列表。下面提供的屏幕截图和代码。下面以黄色突出显示的行是我不想移到“masterorder”列表中的行
截图: iform 图像
使用以下公式填充包含所有零件和数量的单元格(此数据使用 fg num 从“bomitemqty”中提取,上面用红色圈出,以过滤所需的行:
=IFERROR(INDEX(bomitem[PartNum]:bomitem[qtyperunit], SMALL(IF(COUNTIF($G$6,bomitem), MATCH(ROW(bomitem), ROW(bomitem)), ""), ROWS(E$13:$E14)), COLUMNS(bomitemqty!$B$2:B3)),"--")
所需数量使用以下公式计算:
=IFERROR((($L$8*J13)+I13)-(G13+H13),"")
当用户点击保存按钮时,执行以下模块并将“iform”中的数据移动到工作表“masterorder”屏幕截图和下面的代码中的列表(下面的屏幕截图中以黄色突出显示的行和我不想跨过去)
屏幕截图: 提交了示例数据的“ordermaster”表
VBA代码:
Sub Save()
Set frm = ThisWorkbook.Sheets("iform")
Set Source = ThisWorkbook
Dim Var1 As Integer
Dim Var2 As Integer
Dim Var3 As Integer
Set Wks = Source.Worksheets("iform")
Var1 = Application.WorksheetFunction.CountIf(Wks.Range("E13:E29"), "--")
Var2 = 17 - Var1
Var3 = 30 - Var2 - 1
Dim lr As Long, ws As Worksheet
Dim arr As Variant, i As Long
With Worksheets("iform")
lr = .Cells(30, "E").End(xlUp).Row - Var3
ReDim arr(1 To lr, 1 To 9)
For i = LBound(arr, 1) To UBound(arr, 1)
arr(i, 1) = ""
arr(i, 2) = ""
arr(i, 3) = .Cells(i + 12, "E").Value
arr(i, 4) = ""
arr(i, 5) = ""
arr(i, 6) = .Cells(i + 12, "L").Value
arr(i, 7) = .Cells(6, "L").Value
arr(i, 8) = ""
arr(i, 9) = [Text(Now(), "DD-MM-YYYY HH:MM:SS")]
Next i
End With
With Worksheets("ordermaster")
lr = .Range("C" & .Rows.count).End(xlUp).Row + 1
.Cells(lr, "A").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
End With
End Sub
Option Explicit
私有子 cmdSave_Click()
Call Save
End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range)
结束子
解决方案
VBasic2008 在上面的评论中发布了一个答案,解决了我的问题:) ...
就在 Fori = ...
添加该行之后If .Cells(i + 12, "L").Value > 0
然后在 Next 之前添加该行End If
推荐阅读
- r - 在子集 data.table 时分配函数
- reactjs - 接口 A 错误地扩展了接口 B
- sql - 只有在没有值的行的情况下,有没有办法在数据库中选择字段中为 null 的行?
- javascript - npm start 或 npx webpack 编译失败
- java - Java中关于最大值/利润子数组问题的问题
- java - 如何在不膨胀 Lambda 内存的情况下将大文件从 S3 上传到服务器?
- python-3.x - Sqlalchemy 过滤器按计算的日期时间 hybrid_property
- scala - 在无形 HMap 中添加或修改值
- php - 在类中用动态值封装常量?
- javascript - 如何使响应式事件成为全日历