2021年4月20日 星期二

VBA:SETFOCUS 物件設定

 不知道大家是否有與我相同的困擾,就是設定了也不會做動😖😖

例如在表單上設置了一個COMBOBOX的物件也設定了SETFOCUS,但沒反應就是沒反應!!!!

用UserForm1.ComboBox1.SetFocus 無效 XD

在拜讀此篇Re-Focusing on an Excel Userform ComboBox討論後,以以下CODE 測試成功:

with UserForm1.ComboBox1 

    .Visible = False '設定為不可使用

    .Visible = True '設定為可使用

    .setfocus '設定"閃爍 OR 稱焦點也行

end with

在每一次載入表單時,可以將控制權丟到COMBOBOX上或是TEXTBOX上也行,倘若真的不行,還有另外一段CODE,我幫忙補上中文註解:

Sub Focus_ControlOfUserForm(ByRef Obj As Object) 'from the Userform, call Focus_ControlOfUserForm(Me)

Dim ctl As Control

With Obj

    Set ctl = .ActiveControl '設定物件別

    If TypeName(ctl) = "MultiPage" Or TypeName(ctl) = "Frame" Then '判斷物件種類

        Set ctl = ctl.SelectedItem.ActiveControl.Name '重新設定物件別

    End If


    With ctl

        Dim Af As Boolean

        With Application

            Af = .ScreenUpdating

            .ScreenUpdating = False

        End With

        '.SetFocus

        .Visible = False

        .Visible = True

        .SetFocus 

        If Af Then Application.ScreenUpdating = True '開啟螢幕更新

    End With

End With

End Sub


簡單說明一下,這個副程式透過物件別判斷後,做焦點設定,因為特定物件不支援"焦點";另外關鍵在Application.ScreenUpdating這個控制上,因為有時候物件未自動更新導致的。




沒有留言:

張貼留言

我的雷達:2024/11/15

  似乎有一種不安的味道