Ошибка-Ничто условие в случае объекта - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь использовать условный код для Object, такой, что если в объекте найдено значение / текст (в моем примере это JSONObject), то в противном случае ничего не делаем.Но когда я запускаю код, он работает только при обнаружении в объекте и показывает «ошибку времени выполнения», когда он не найден в объекте.

Код: -

Private Sub CommandButton3_Click()
Dim jsonText As String
Dim FSO As New FileSystemObject
Dim JsonTS As TextStream
Dim jsonObject As Object('It is an object created )

myfile = Application.GetOpenFilename(FileFilter:="JSON file (*.json), *.json", Title:="Get File", MultiSelect:=True)
Set JsonTS = FSO.OpenTextFile(myfile, ForReading)
jsonText = JsonTS.ReadAll
JsonTS.Close
Set jsonObject = JsonConverter.ParseJson(jsonText)
' Condition that if in jsonObect, "b2b" is found then 
    If Not jsonObject("b2b") Is Nothing Then
    For Each item In jsonObject("b2b")  '("inv")
    Sheet3.Cells(a, 2) = jsonObject("fp")
    Sheet3.Cells(a, 1) = item("ctin")
    End If
End Sub

1 Ответ

0 голосов
/ 31 декабря 2018

Я бы предпочел иметь JSON для тестирования, но вы можете попытаться установить jsonObject("b2b") в новую переменную, заключенную в On Error Resume Next, а затем проверить это для If Not Is Nothing

Dim b2bObject As Object
Dim item As Variant '<<=== ? missing from your code
On Error Resume Next
Set b2bObject = jsonObject("b2b")
On Error GoTo 0

If Not b2bObject Is Nothing Then
    For Each item In b2bObject
        Sheet3.Cells(a, 2) = jsonObject("fp")
        Sheet3.Cells(a, 1) = item("ctin")
    Next
End If

При использованиив цикле вы можете пожелать Set b2bObject = Nothing до End If в качестве гарантии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...