繁体   English   中英

如果部分语句未使用UserForm执行

[英]If statement partially not executed with UserForm

我使用简单的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文本框都在列表中填充了其他宏的帮助。

每种材料以2种方式存储。 小件。 或大箱子。 从其中的几个人中,您可以拿起那些小电脑。 从其他只整个盒子。 那就是为什么我写了2个与UserForm一起使用的宏。

第一宏删除那些小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

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

我假设不是Me.AusAmmTubesAuslagernMe.AusAvailTubes是用户窗体上的控件,并且您要检查输入。 如果你仔细检查你if语句来,你会发现总是导致True -如果你输入的字符串开始的东西,如“X”为除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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM