【发布时间】:2020-04-09 01:57:28
【问题描述】:
我正在为库存文员创建一个用户表单,该文员出于审计目的对库存进行物理清点。目前的流程在纸上 - 我想把它放在平板电脑上。
目标:
1) 单行出现在表单上,包含项目位置、产品、数量和描述 2)如果数量正确,用户点击“正确”,下一项出现 3)如果数量不正确,用户键入观察到的数量,写入相应数据表的J列 4)如果用户想要检查/重新处理项目,则可以向前和向后滚动选项
Private Sub CommandButton1_Click()
'GET DATA FROM TABLE
ListBox1.ColumnCount = 4
ListBox1.RowSource = "A2:D500"
End Sub
'IF QTY IS CORRECT, NEXT ROW
Private Sub CommandButton_QtyCorrect_Click()
Call SpinButton1_SpinUp
End Sub
'IF QTY DOESN'T MATCH, USER KEYS CORRECT
Private Sub CommandButton2_Click()
Range("K1") = TextBox2_Qty.Value
TextBox2_Qty.Value = ""
End Sub
Private Sub ListBox1_Click()
'DISPLAY DATA TABLE
End Sub
Private Sub SpinButton1_SpinDown()
If ListBox1.ListIndex > 0 Then
ListBox1.Selected(ListBox1.ListIndex - 1) = True
End If
End Sub
Private Sub SpinButton1_SpinUp()
If ListBox1.ListIndex + 1 < ListBox1.ListCount Then
ListBox1.Selected(ListBox1.ListIndex + 1) = True
End If
End Sub
Private Sub TextBox2_Qty_Change()
'USER OVERWRITE
End Sub
问题:
1) 使用当前设置,所有行都填充 ListBox。如何一次显示一行?
2)当当前行显示在ListBox上时,不匹配的情况下如何写入J列对应行?
答案
1) 由下面的 Ralf S 解决。
2) 解决方案:
Private Sub AdjustButton_Click()
'IF QTY DOESN'T MATCH, USER KEYS CORRECT
Range("J" & SpinButton1.Value) = TextBox2_Qty.Value
TextBox2_Qty.Value = ""
End Sub
【问题讨论】:
标签: vba datatable listbox userform