2014-02-05 24 views
0

隱藏列我使用ActiveX複選框,在我的工作表下面的宏:Excel中:如何使用複選框形式馬可對MAC

Private Sub CheckBox1_Click() 
If CheckBox1 = True Then 
    Columns("P:V").Hidden = True 
Else 
    Columns("P:V").Hidden = False 
End If 
End Sub 

,它工作正常我的電腦上。但是,當我嘗試在Mac上執行此操作時,它不起作用,因爲Mac沒有提供對activeX的支持。我試過使用常規窗體控件複選框,但是當我使用這個宏時,它看起來沒有任何功能。有人有主意嗎?我是一種VBA/Excel noob。

+0

窗體控件從的ActiveX功能不同取代ActiveSheet - 你需要一個宏直接分配到窗體複選框(右鍵單擊 - >分配宏)。你可以使用類似於'ActiveSheet.Shapes(Application.Caller).ControlFormat.Value'的方式引用宏中的複選框。 –

+0

那麼是否有可能使MAC友好的宏使用表單複選框來隱藏列? – Snoobie

+0

我不明白爲什麼不,如果您使用窗體控件。但我沒有訪問Mac,所以我不能說100%。 –

回答

0

如果您在工作表上放置兩個表單複選框,並將它們命名爲「cbB」和「cbC」,則可以將下面的宏指定給它們兩個。哪一列受到影響取決於哪個複選框會觸發Sub。

代碼是一個普通模塊:如果你想讓它的片模塊中,然後我會Me

Sub CheckBox_Click() 

    Dim vis As Boolean, ac As String, col As String 

    ac = Application.Caller 

    With ActiveSheet 

     vis = (.Shapes(ac).ControlFormat.Value = 1) 

     Select Case ac 
      Case "cbB": col = "B" 
      Case "cbC": col = "C" 
     End Select 

     If col <> "" Then .Columns(col).Hidden = vis 

    End With 

End Sub 
+0

當我使用activesheet它工作!這是它不喜歡的「我」。再次感謝你! – Snoobie