每次都设置焦点需要调试

时间:2017-04-12 08:27:26

标签: vba excel-vba userform setfocus excel

我之前在set focus创建了userform选项。然而这次我遇到了一些问题,并且想知道是否有人可以请求协助。我认为问题存在是因为我在pages上使用userform,而通常我不会。{/ p>

我的userform有4页需要4个不同的部分。我想要它,以便如果我要在所述字段上将字段留空setfocus。但是当发生这种情况时,我收到运行时错误' 2110' End,Debug。

Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Master Data")

'find first empty row in database
iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

If Me.BDM.Value = "" Then
    Me.BDM.SetFocus
    MsgBox "Please Enter BDM"
    Exit Sub
End If

1 个答案:

答案 0 :(得分:0)

通过在多页控件顶部显示Page1来避免错误2110

您必须在触发Page1之前激活SetFocus,以使文本框控件可见。

相关代码

此代码示例假定您的BDM文本框位于名为MultiPage1的多页面控件的第一页(=索引0)上。 通过Page1 选择Me.MultiPage1.Value = 0 避免 Excel 控件解释为隐藏并引起错误2110.

此外,有必要在显示消息框之后通过技巧实际激活焦点(通过后续隐藏/显示userform)。

If Me.BDM.Value = "" Then
  'Choose Page1 to allow view without error 2110
   Me.MultiPage1.Value = 0  ' << avoid error 2110 by activating Page1
   MsgBox "Please Enter BDM"
   Me.BDM.SetFocus
   Me.Hide: Me.Show         ' activate above set focus
   Exit Sub
End If