2017-03-15 3 views
3
Dim cat As Integer 
For cat = 2 To last 
    Range("AB" & cat).Select 

    If Selection.Value = " " Then 
     ActiveCell.Offset(0, -2).Value = "-" 
     ActiveCell.Offset(0, -1).Value = "-" 

    ElseIf Selection.Value = "Address in local wording" Then 
     ActiveCell.Offset(0, -2).Value = "Customer" 
     ActiveCell.Offset(0, -1).Value = "Incomplete information or awaiting more info from customer" 

    ElseIf (Selection.Value = "hold to console" Or "Hold to console" Or "Allocated 14/12 and ship next day") Then 
     ActiveCell.Offset(0, -2).Value = "Depot" 
     ActiveCell.Offset(0, -1).Value = "Allotment delay" 

    ElseIf (Selection.Value = "Backorder" Or "backorder" Or "Back order" Or "back order") Then 
     ActiveCell.Offset(0, -2).Value = "Inventory" 
     ActiveCell.Offset(0, -1).Value = "Material not available causing backorder" 

    End If   
Next cat 

내가 Selection.Value가 비어있을 때입니다 얻을 결과, "-" , "-" 나머지 모든 작동하지 않는 경우 "Depot", "Allotment delay"을 보여 만 해당.내가 사용하거나 여러 조건을 형성하기 위해 VBA에 ELSE 문, 그것은

이 코드의 잘못된 점은 무엇입니까? 아래의 줄을 사용

답변

6

올바르지 않습니다

ElseIf Selection.Value = "hold to console" Or Selection.Value = "Hold to console" Or Selection.Value = "Allocated 14/12 and ship next day" Then 

참고 :

ElseIf (Selection.Value = "hold to console" Or "Hold to console" Or "Allocated 14/12 and ship next day") Then 

당신은 각 조건 전에 Selection.Value =을 추가하려면 아래 라인을 볼 필요가 같은 다른 모든 ElseIf의 당신이 적용 .


편집 한

그러나, 나는 아래의 코드를 사용하는 것이 좋습니다 것입니다. 귀하의 코드는 Select Case에 대해 "비명"입니다. 또한 Range("AB" & cat).Select 이상을 사용하지 않고 ActiveCell을 사용할 필요가 없습니다. 대신 완전 수식 Range 만 사용할 수 있습니다.

코드

Dim cat As Long 

For cat = 2 To last 
    Select Case Range("AB" & cat).Value 
     Case " " 
      Range("AB" & cat).Offset(0, -2).Value = "-" 
      Range("AB" & cat).Offset(0, -1).Value = "-" 

     Case "Address in local wording" 
      Range("AB" & cat).Offset(0, -2).Value = "Customer" 
      Range("AB" & cat).Offset(0, -1).Value = "Incomplete information or awaiting more info from customer" 

     Case "hold to console", "Hold to console", "Allocated 14/12 and ship next day" 
      Range("AB" & cat).Offset(0, -2).Value = "Depot" 
      Range("AB" & cat).Offset(0, -1).Value = "Allotment delay" 

     Case "Backorder", "backorder", "Back order", "back order" 
      Range("AB" & cat).Offset(0, -2).Value = "Inventory" 
      Range("AB" & cat).Offset(0, -1).Value = "Material not available causing backorder" 
    End Select 

Next cat 
+0

의미가 있습니다! 정말 고맙습니다. – lcc

+1

@lcc 대답과 코드를 참조하십시오 ** 편집 1 **, 당신이 코드에 적응 해야하는 방법이라고 생각합니다 –

+0

원래 코드가 _running_ 인 방법에 대한 설명이 있습니까? 나는 그 행동을 재현 할 수 없었다. –

3

는 당신이 각 조건의 평등을 표현할 필요가 있다고 생각합니다. 대신이의 즉 :

(Selection.Value = "hold to console" Or 
"Hold to console" Or 
"Allocated 14/12 and ship next day") Then 

이를 사용해야합니다 :

(Selection.Value = "hold to console" Or 
Selection.Value = "Hold to console" Or 
Selection.Value = "Allocated 14/12 and ship next day") Then 
+0

ur 도움에 감사드립니다 !! – lcc