2012-03-09 74 views
1

如果有人知道我能做些什么来解决问题,那么我需要以下帮助。用户表单的运行时错误

以下将是我想要它的样子的用户表单。

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 
+0

它有助于我们理解你正在尝试在代码中做,如果你缩进代码:) – 2012-03-09 07:48:49

+0

我觉得我没缩进,但我留下了一些...很抱歉的麻烦。 – user1204868 2012-03-09 08:41:55

回答

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

希德

+0

嗨,我编辑你的文章,以防止任何人混淆..将现在尝试你的代码!谢谢! – user1204868 2012-03-09 08:14:07

+0

@ user1204868:你的意思是'你的'帖子:)我也在我的代码中做了这些更改。 – 2012-03-09 08:17:22

+0

yup ..我的也是你的..你答案的第一个编辑部分。 :).. 谢谢!它运作良好! :) – user1204868 2012-03-09 08:18:21