我目前有一个宏,如果一个字段留空,它会弹出一个弹出窗口。我遇到的问题是,一旦你确认错误,它就会消失,让你继续前进而不填写字段。有谁知道我在宏中缺少什么?我不会发布整个脚本,因为它很长但是目前看起来像这样......
If Range("L58") = "Sigma Network" And Range("M58") = "" Then MsgBox "Please enter cable length "
我可以创建一个适用于所有其他脚本的脚本,还是每个脚本都需要拥有自己的脚本?
答案 0 :(得分:2)
非常简单,例如:
If Range("L58") = "Sigma Network" And Range("M58") = "" Then
Range("M58").Value = InputBox("Please enter cable length ", "Input value!", 0)
End If
您当然需要额外的逻辑来阻止用户输入0值或空字符串等,
如果您正在执行此操作,例如50个不同的单元格对(例如L58到L107和M58到M107),这是您可以使用的基本循环结构:
Dim cl as Range
For Each cl in Range("L58:L107")
If cl.Value = "Sigma Network" and cl.Offset(0,1).Value = "" Then
cl.Offset(0,1).Value = GetValue("Please enter cable length ", "Input value!", 0)
End If
Next
循环可以进一步细化(例如,如果“Sigma Network”不是您要检查的唯一内容,或者如果您根据某些其他条件需要输入框的不同消息文本等。
这将需要自定义GetValue
函数,该函数调用InputBox
提示符,并配置为阻止来自用户的0值输入。可能需要额外的逻辑来防止其他类型的数据输入。
Function GetValue(msg as String, _
Optional title as String = "", _
Optional default as Double = 0)
'Function that calls the InputBox method
Dim ret
Do Until ret <> 0
ret = InputBox(msg, title, default)
Loop
GetValue = ret
End Function