Я пытаюсь найти данные в сводной таблице и отобразить в сообщении - PullRequest
0 голосов
/ 18 января 2020

Итак, у меня есть учетная ведомость, в которой имена вводятся ежедневно. Я пытаюсь написать какой-нибудь VBA для поиска по этим именам, один за другим после того, как они будут напечатаны на другом листе, который является Листом выплат за выдачу. На этом листе есть список всех непогашенных платежей на дату, а также сводная таблица для тех же данных. Теперь я могу извлечь непогашенный платеж, но я сталкиваюсь с ошибкой, когда искомого имени нет в списке выдающихся. Я новичок в VBA, и все, что я написал до сих пор, - это просмотр справки, форумов, копирование кода вставки и некоторые истечения срока действия.

ошибка приложения или объекта - 1004

Private Sub Worksheet_Change(ByVal Target As Range)

Dim KeyCells As Range
Set KeyCells = Sheets("Accounts").Range("B4:B1000")

If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    If IsEmpty(Target) Then

    ElseIf IsEmpty(Target.Address) Then

    Else
        MsgBox Target.Value
        Worksheets("OutstandingAndDeposits").Activate
        'Updating Table in Outstandings Sheet
        ActiveSheet.PivotTables("PivotTableOutstandings").PivotCache.Refresh

        Dim search_value As Variant                                           
        ' Get PivotData for the outstandings.
        ' the 1004 error occurs on the next line
        search_value = ActiveSheet.PivotTables("PivotTableOutstandings").GetPivotData("Amount", "Customer", Target)
        MsgBox search_value
        Worksheets("Accounts").Activate
    End If

End If
End Sub

1 Ответ

0 голосов
/ 19 января 2020

Попробуйте заменить эту часть кода:

search_value = ActiveSheet.PivotTables("PivotTableOutstandings").GetPivotData("Amount", "Customer", Target)
MsgBox search_value

Отредактировано С этим:

Dim search_value As Range
' try to assign to variable
On Error Resume Next
' in case there is nothing - there will be an error
Set search_value = ActiveSheet.PivotTables("PivotTableOutstandings").GetPivotData("Amount", "Customer", Target)
On Error GoTo 0

' if value found - it is assigned to variable
' error comes in the next line. Object required error
If Not search_value Is Nothing Then
    ' show value
    MsgBox search_value
End If

Посмотрите, как это работает how it works

...