2014-11-09 5 views
0

Im пытается написать заявление VBA If.
Я проверяю, существуют ли определенные узлы JSON.Написание IF, ELSEIF ELSE

Существует три типа: первый узел, узел продолжения и неправильный пустой узел.

Это держит повесить на первом, когда это так.

If Not jSonRoot.child("MediaType").child("first") Is Nothing Then 
    'First Pass 
ElseIf Not jSonRoot.child("second") Is Nothing Then 
    'Continuation 
Else 
    'Json is nothing, malformed. 
End If 
+1

«повесил трубку» как? И гарантируется ли, что в каждом случае ** будет существовать дочерний файл 'MediaType' из' jSonRoot' **? (Потому что код полагается на эту предпосылку, вызывая '.child' на результат' .child ("MediaType") '.) –

ответ

1

Я собираюсь предположить, что иногда нет MediaType ребенка; в этом случае первый If взорвется, потому что вы пытаетесь позвонить .child("first") по телефону Nothing.

Если я прав, к сожалению, вы должны отделить, что первое условие в отдельные If заявления, потому что VBA не имеет короткого замыкания для And:

If Not jSonRoot.child("MediaType") Is Nothing Then 
    If Not jSonRoot.child("MediaType").child("first") Is Nothing Then 
     'First Pass 
    Else 
     'Handle case where there's a MediaType but no .child("first") 
    End If 
ElseIf Not jSonRoot.child("second") Is Nothing Then 
    'Continuation 
Else 
    'Json is nothing, malformed. 
End If 
Смежные вопросы