2016-10-18 4 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 및 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 

루프를 추가로 발견 될 수있다 d (예 : "시그마 네트워크"만 확인하는 것이 아닌 경우 또는 다른 조건에 따라 입력 상자에 다른 메시지 텍스트가 필요한 경우 등)

사용자 정의 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