Обрабатывать ошибку в .GetData () для сводной таблицы, когда значение поиска не существует - PullRequest
0 голосов
/ 21 февраля 2019

Я использую Excel 365 и делаю поиск в некоторых сводных таблицах с использованием VBA.Я столкнулся с проблемой, когда я фильтрую что-то, а затем выполняю .GetData для запроса сводной таблицы, и то, что я ищу, больше не существует.Например, если бы я настроил сводную таблицу так, чтобы Item_B больше не находился в ней, и сделал бы:

pt.GetData("Col_1 Item_B")

, я бы получил ошибку.Я попытался сделать что-то вроде следующего, но это дает ошибку несоответствия типов (на самом деле я получаю данные, основанные на метке и i.Value, который является частью диапазона ячеек):

On Error Resume Next
tVal = .GetData(label & " " & i.Value)
On Error GoTo 0

If CBool(tVal) Is Nothing Then
   i.offset(0, 1).Value = "-"
Else
   i.offset(0, 1).Value = .GetData(label & " " & i.Value)
End If

Я былвозиться с ним, но не смогли обойти ошибку.Я надеялся, что кто-то здесь может сказать мне, как подойти к этой проблеме?

1 Ответ

0 голосов
/ 21 февраля 2019

Попробуйте что-нибудь подобное?

Dim errorInGettingValue As Boolean

On Error Resume Next
tVal = .GetData(Label & " " & i.Value)
If Err.Number <> 0 Then errorInGettingValue = True '<~~ Check if error happened
On Error GoTo 0

If errorInGettingValue Then
   i.Offset(0, 1).Value = "-"
Else
   i.Offset(0, 1).Value = .GetData(Label & " " & i.Value)
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...