2012-03-09 94 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