ошибка времени выполнения для пользовательской формы - PullRequest
1 голос
/ 09 марта 2012

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

Ниже будет пользовательская форма того, как я хочу, чтобы она выглядела.1005 *

То, что я пытаюсь сделать, это выбрать этот test1, который будет связываться с сводной таблицей, где его выбор, также выберет test1 в сводной таблице.Затем мне нужно будет написать имя «test1» на другом листе, который называется «Лист2».Я могу написать код для этого, но когда я пытаюсь отменить его выбор, появляется ошибка во время выполнения.Было интересно, если мне нужно добавить другой код для этого или уже есть ошибка в моем коде.

Мой код:

Private Sub CheckBox2_Click()
    If CheckBox2.Value = True Then
        Sheets("Sheet1").Select
        With ActiveSheet.PivotTables("PivotTable1").PivotFields("Test1")
            .Orientation = xlColumnField
            .Position = 1
        End With
        ActiveSheet.PivotTables("PivotTable1").PivotFields("Test1").Subtotals = Array( _
        False, False, False, False, False, False, False, False, False, False, False, False)
        Sheets("Sheet2").Select
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "Test1"
        Sheets("Sheet1").Select
    End If

    If CheckBox2.Value = False Then
        ActiveSheet.PivotTables("PivotTable1").PivotFields("Test1").Orientation = _
        xlHidden
        Sheets("Sheet2").Select
        Range("A1").Select
        ActiveCell.FormulaR1C1 = ""
    End If
End Sub

1 Ответ

2 голосов
/ 09 марта 2012

Всегда старайтесь избегать . Выберите , так как они являются основной причиной боли :) Попробуйте это

ПРОВЕРЕНО И ИСПЫТАНО

Private Sub CheckBox2_Click()
    Dim ws As Worksheet

    '~~> Sheet1 has the pivot
    Set ws = Sheets("Sheet1")

    If CheckBox2.Value = True Then
        With ws
            With .PivotTables("PivotTable1").PivotFields("Test1")
                .Orientation = xlColumnField
                .Position = 1
            End With
            .PivotTables("PivotTable1").PivotFields("Test1").Subtotals = Array( _
            False, False, False, False, False, False, False, False, False, False, False, False)
            Sheets("Sheet2").Range("A1").Value = "Test1"
        End With
    Else '<~~ If false
        ws.PivotTables("PivotTable1").PivotFields("Test1").Orientation = xlHidden
        Sheets("Sheet2").Range("A1").ClearContents
    End If
End Sub

РЕДАКТ. - FOLLOWUP

да .. test2 может быть либо на А1, либо на А2 .. но иногда test1 может быть рядом с тем, что будет на А1 .. извините за дополнительный вопрос - user1204868 30 секунд назад

Измените эту строку Sheets("Sheet2").Range("A1").ClearContents на

With Sheets("Sheet2")
    If .Range("A1").Value = "Test2" Then .Range("A1").ClearContents
    If .Range("A2").Value = "Test2" Then .Range("A2").ClearContents
End With

НТН

Sid

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