若想要在VBA運作時,先關掉所有的conrtrols,等運作完再打開可以參考以下的做法 Controls項目昰在UserForm上

 

Private Sub CommandButton_Click()
    'Disable All Controls while running
    DisableAllControls Me
 
    'Do anything you want...

    'Enable All Controls after finish
    EnableAllControls Me
End Sub


Function EnableAllControls(frm As UserForm)
    Dim ctrl As Controls
    For Each ctrl In frm.Control
        If TypeName(ctrl) = "CommandButton" Or TypeName(ctrl) = "ListBox" Or TypeName(ctrl) = "CheckBox" Or TypeName(ctrl) = "TextBox" Then
            ctrl.Enabled = True
        End If
    Next
    Set ctrl = Nothing
End Function

Function DisableAllControls(frm As UserForm)
    Dim ctrl As Controls
    For Each ctrl In frm.Control
        
        If TypeName(ctrl) = "CommandButton" Or TypeName(ctrl) = "ListBox" Or TypeName(ctrl) = "CheckBox" Or TypeName(ctrl) = "TextBox" Then
            ctrl.Enabled = False
        End If
    Next
    Set ctrl = Nothing
End Function

 

如果Controls昰放在Workbook上的

Private Sub CommandButton_Click()
    'Disable All Controls while running
    DisableAllControls
 
    'Do anything you want...

    'Enable All Controls after finish
    EnableAllControls
End Sub

Function EnableAllControls()
    Dim wks As Worksheet
    For Each wks In Worksheets
        Worksheet.DrawingObjects.Enabled = True
    Next
End Function

Function DisableAllControls()
    Dim wks As Worksheet
    For Each wks In Worksheets
        Worksheet.DrawingObjects.Enabled = False
    Next
End Function

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 song1st 的頭像
    song1st

    song1st

    song1st 發表在 痞客邦 留言(0) 人氣()