if 语句部分不使用用户窗体执行



我使用简单的if语句在执行用户表单中的数据之前进行一些检查。如果我的陈述是正确的,代码将继续进行更改,如果不是,它会给我msgbox

这是不起作用的部分:

If Me.AusAmmTubesAuslagern.Value <= Me.AusAvailTubes Or _
Me.AusAvailTubes <> "N/A" Then

第一部分If Me.AusAmmTubesAuslagern.Value <= Me.AusAvailTubes完美运行。 味精盒出现了。

如果我在我的陈述中重现这一点:我的Me.AusAvailTubes= N/A,它不起作用。它进行这些更改。仅当该字段具有除 N/A 以外的其他 txt 时,它才应该发生。

我试图直接从列表而不是从UserForm获取该数据,同样的问题......

所有这些用户窗体文本框都是在其他宏的帮助下从列表中填充的。

每种材料都以 2 种方式存储。小件。或大盒子。从他们中的几个,你可以拿那些小电脑。从其他只有整盒。这就是为什么我写了 2 个宏,它们与 UserForm 一起工作。

第一个宏删除那些小电脑。 第二只有整箱。

我需要 2 个检查点:

检查点 1:如果 Me.AusAmmTubesAuslagern.Value <= Me.AusAvailTubes,它会检查例如仓库中的一个盒子里有 40 个管子,用户试图移除更多的棕褐色 40 它会用 msgbox 阻止他。

检查点2:该材料不在小PC中。 可用,您需要随身携带整个盒子。在这种情况下,我的列表中有一列具有"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

我想你的问题是混合数字和字符串。或者,您混淆了ORAND

我假设比Me.AusAmmTubesAuslagernMe.AusAvailTubes是用户表单上的控件,并且您想检查输入。如果你仔细检查你的if语句,你会发现它总是导致True- 除非你在AusAmmTubesAuslagern中输入一个以"X"开头的字符串

为简单起见,我们假设:

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

最新更新