userform的运行时错误

时间:2012-03-09 07:37:52

标签: vba excel-vba excel

如果有人知道我能做些什么来解决问题,我需要帮助以下奇迹。

以下将是我想要它的用户形式。

enter image description here

我要做的是选择这个将与枢轴表链接的test1,在其中选择它,也将在数据透视表上选择test1。然后,我需要将名称“test1”写入另一个工作表,称为Sheet2。我能够编写一个代码来执行此操作,但是当我尝试取消选择它时,会出现运行时错误。想知道我是否需要为其添加另一个代码,或者我的代码中已经存在错误。

我的代码:

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 个答案:

答案 0 :(得分:2)

始终尽量避免。选择,因为它们是导致疼痛的主要原因:)试试这个

已经过测试

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

编辑 - 关注

  
    
      

是.. test2可以在A1或A2 ..但有时test1可以在A1附近..对不起附加问题 - 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

HTH

西特