在执行来自用户表单的数据之前,我使用简单的if语句进行一些检查。如果我的说法正确,那么代码将继续进行更改,否则,我将msgbox
这部分无效:
If Me.AusAmmTubesAuslagern.Value <= Me.AusAvailTubes Or _
Me.AusAvailTubes <> "N/A" Then
第一部分If Me.AusAmmTubesAuslagern.Value <= Me.AusAvailTubes
运作良好。 msgbox出现了。
如果我在声明中重现这一点:我的Me.AusAvailTubes
= N / A,则它不起作用。做出这些更改。仅当该字段具有除N / A以外的其他txt时,才应该发生这种情况。
我试图直接从列表中而不是从UserForm中获取数据,这是同样的问题...
在其他宏的帮助下,所有这些UserForm文本框都从列表中填充。
每种材料都有2种存储方式。小件。或大箱子。从其中的几个人中,您可以拿起那些小电脑。从其他只整个盒子。那就是为什么我写了两个与UserForm一起使用的宏。
1st Macro删除那些小的pc。 仅第二个整箱。
我需要2个检查点:
检查点1:如果Me.AusAmmTubesAuslagern.Value <= Me.AusAvailTubes,则检查ex。仓库中的一个盒子里有40个试管,用户尝试删除更多的棕褐色40,它将用msgbox阻止他。
检查点2:该材料不是放在小块中。可用,您需要随身携带整个包装盒。在这种情况下,我的列表中有一列为“ N / A”,它将与该文本框Me.AusAvailTubes
中的其他宏一起写入,然后用户才能尝试从带有宏的仓库中将其撤回。该文本框需要检查,如果该文本框中的内容为“ N / A”,则该代码也将提供msgbox并停止该代码
整个代码:
Sub Tubes()
Dim totRows As Long, i As Long
Dim wsTubes As Worksheet
Dim oldVal As Integer
Dim newVal As Integer
Dim AusWS As Worksheet
Dim newValAus As String
Dim oldValAus As String
Select Case Me.AusListe.Value
Case Is = "E1G"
Set wsTubes = E1G
Set AusWS = AusE1G
totRows = wsTubes.Range("A1").CurrentRegion.Rows.Count
'Check to see if value exists
If WorksheetFunction.CountIf(wsTubes.Range("A:A"), Me.AusCharge.Value) = 0 Then
MsgBox "no right Charge chosen"
Me.AusCharge.Value = ""
Exit Sub
End If
With wsTubes
For i = 2 To totRows
If .Cells(i, 1) Like Me.AusCharge Then
If Me.AusAmmTubesAuslagern.Value <= Me.AusAvailTubes Or _
"N/A" <> Me.AusAvailTubes Then
oldVal = .Cells(i, 14).Value
newVal = oldVal + Me.AusAmmTubesAuslagern.Value
wsTubes.Cells(i, 14) = newVal
Else
MsgBox "So viele Stücke dieser sind nich auf Lager vorhanden!"
Exit Sub
End If
End If
Next
End With
“其余代码对上面的那部分并不重要
End Select
End Sub
答案 0 :(得分:1)
我猜你的问题是数字和字符串混合。还是让OR
和AND
感到困惑?
我假设Me.AusAmmTubesAuslagern
和Me.AusAvailTubes
不是用户窗体上的控件,并且您想检查输入。如果您仔细检查您的if
语句,将会看到总是会在True
中产生结果-除非您在AusAmmTubesAuslagern
为简单起见,让我们假设:
val1: Me.AusAmmTubesAuslagern.Value
val2: Me.AusAvailTubes
cond1: v1 <= v2
cond2: v2 <> "N/A"
然后,您的IF
语句会导致(同时在条件AND
中加上条件,也许正是您所需要的)
val1 val2 cond1 cond2 cond1 OR cond2 cond1 AND cond2
-----------------------------------------------------------------
3 2 False True True False
2 3 True True True True
1 "N/A" True False True False
"AA" "N/A" True False True False
"XY" "N/A" False False False False