|
楼主 |
发表于 2011-2-20 14:09
|
显示全部楼层
二楼的高手,还在吗? 可能是我表达不清楚了...
第5列(为08064B)第6列(92号工序)的行,即#02-52A制单08064B款号第92号工序共做了100件,那以后再输入此工序
并不是只要第3列和第4列相同,就计算之和.
而查询到是3\4\5列都相同的和
(即只有相同制单 相同款号 相同工序的完成件数之和 超过了"允许生产数"才报警提示)
下面也是我对你的代码有不理解之处, 另不正确之处也请正
Private Sub Worksheet_Change(ByVal Target As Range)
Dim d As Object, arr, c As Range
Dim t, y
Set d = CreateObject("scripting.dictionary")
If Target.Count > 1 Then Exit Sub 这一行是不是说如果同时选择了两行以上就不运行此触发?? 不懂
If Target.Row > 4 Then "从第5行开始以后.如果有更改就开始触发
If Target.Column = 9 Then '第9列开始判断输入的所使用的工时是否大于14个小时
If Target > 14 Then
t = MsgBox("录入数大于14,确定要输入吗?", vbOKCancel, "提示")
If Not t = vbOK Then
Target.ClearContents
End If
End If
ElseIf Target.Column = 10 Then ' 判断第10列写的完成件数,
arr = Range("a5:o" & [a65536].End(3).Row) ' [a65536].End(3).Row) 与[a65536].End(xlUp).Row)写法是不是一致
For i = 1 To UBound(arr)
d(arr(i, 5)) = d(arr(i, 5)) + arr(i, 10) '将第10所有之和加到字典中去,但为什么前面一个是arr(i, 5)),而被加数为arr(i, 10) 不理解??
Next
With Sheets("订单数")
Set c = .Range("").Find(Cells(Target.Row, 5).Value, , , 1) ??不解c:c 是什么意义,
If Not c Is Nothing Then
If d(c.Value) > c.Offset(, 2) Then '不理解d(c.Value) > c.Offset(, 2) 的意思???
y = MsgBox("超过可以生产数,确定要输入吗?", vbYesNo, "提示")
If y = vbNo Then
Target.ClearContents
End If
End If
Else
MsgBox "没有该项订单!"
End If
End With
End If
End If
End Sub
|
|