创建错误宏

时间:2016-10-18 18:09:49

标签: excel vba excel-vba

我目前有一个宏,如果一个字段留空,它会弹出一个弹出窗口。我遇到的问题是,一旦你确认错误,它就会消失,让你继续前进而不填写字段。有谁知道我在宏中缺少什么?我不会发布整个脚本,因为它很长但是目前看起来像这样......

If Range("L58") = "Sigma Network" And Range("M58") = "" Then MsgBox "Please enter cable length "

我可以创建一个适用于所有其他脚本的脚本,还是每个脚本都需要拥有自己的脚本?

1 个答案:

答案 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