2013-04-23 3 views
0

MY 입력 상자를 사용하면 셀에 값을 입력 할 수 있습니다. 따라서 =SUM(A:A)'과 같은 입력을 필터링하고 아무 것도 표시하지 않고 실제 값에 영향을주는 다른 수식 또는 항목을 필터링하려고합니다. 미리 감사드립니다.EXCEL VBA 사용자 입력 필터링

Private Sub testInputBox_Click() 
    Dim x As String 
    Dim y As String 
    Dim yDefault As String 
    Dim found As Range 

    x = InputBox("Enter Parts No.", "Edit Description") 

    If (x <> "") Then 
     If (WorksheetFunction.CountIf(Worksheets("Sheet1").Range("E2:E27"), x) > 0) Then 
      Set found = Worksheets("Sheet1").Range("E2:E27").Find(x, LookIn:=xlValues) 
      yDefault = found.Offset(0, 1).Text 
      y = InputBox("Amend Description", "Edit Description", yDefault) 
     Else 
      MsgBox ("Not found!") 
     End If 

     If (y <> "") Then 'Filter should be done here 
      If MsgBox("Proceed to edit?", vbYesNo, "Confirmation") = vbNo Then 
      Else 
       found.Offset(0, 1).Value = CStr(y) 
      End If 

     End If 
    End If 
End Sub 
+0

사용하는 입력 상자의 유형은 무엇입니까? 그 코드의 간단한 부분과 나중에 셀에 데이터를 입력하는 방법을 보여주세요 –

+0

내 질문에 업데이트 된 코드 블록 –

답변

1

일부 또는 모든 필수 값을 다른 방법으로 필터링 할 수 있습니다. y variable은 문자열 유형입니다. 따라서 여기에 몇 가지 의견과 아이디어의 일부입니다 :

'tests for starting characters 
If y <> "'" And y <> "=" Then 
    'test for formulas 
    If UCase(Left(y, 4)) <> "=SUM" Then 
     'test for any string within other string 
     If InStr(1, y, "sum", vbTextCompare) = 0 Then 
      '...here your code 
     End If 
    End If 
End If 

당신이 and 또는 or 연산자를 사용하여 하나의 if...then 문에 그들 모두를 결합 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다! 나는 '='필터가 사용자 입력 공식을 셀에 넣지 못하도록 막을 수 있다고 생각합니다. 그러나 나는 그것이 왜 첫 번째 인물인지 보여주지 않을 이유가 궁금했습니다. –