2016-10-18 2 views
0

В настоящее время у меня есть макрос, который будет выдавать всплывающее окно в случае, если поле осталось пустым. Проблема, с которой я столкнулась, когда вы признаете ошибку, она уходит и позволяет вам работать без заполнения поля. Кто-нибудь знает, чего мне не хватает в макросе? Я не буду размещать весь сценарий, потому что это очень долго, но она в настоящее время выглядит следующим образом ...Создание макроса ошибки

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

Могу ли я создать один сценарий, который будет работать для всех остальных или делает каждую потребность иметь свой собственный ?

+0

* Кто-нибудь знает, чего я не хватает в макросе? Я не буду публиковать весь скрипт, потому что он очень длинный ... * ** << ** Эти два утверждения, похоже, противоречат друг другу. Никто здесь не может читать ваш ум ... –

+1

Вместо 'MsgBox' вы, вероятно, захотите использовать' InputBox' и присвоить возвращаемое значение 'Range (« M58 »)', но это всего лишь предположение. –

+0

Это тот же самый скрипт, но разные ячейки. Так что L55, L56, L57 и т. Д. Я не думал, что нужно будет увидеть 50 из того же самого. – Sherri

ответ

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 и М58 к 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 

петля может быть дополнительно уточняют d (например, если «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 
Смежные вопросы