我有一个包含文本框的VBA表格(如果重要的话,在Excel中)。
有三次,我发现自己按Tab键导航到下一个控件,而是将一个实际的TAB放在文本框中。
这种形式通常会起到应有的作用,但我确实关注这种情况偶尔会出现。
它已在两台不同的计算机上显示在Office 2003和Office 2007上。
是否还有其他人遇到此问题,如果有,您是如何解决的?
答案 0 :(得分:3)
我能够通过启动Excel,立即拉出表单并按住Tab键来100%重现问题。
如果我在表单中更改任何代码并重新保存工作簿,问题就会消失。我将在VBA中将这一点归结为侥幸编译错误。
答案 1 :(得分:1)
我创建了一个包含三个文本框的表单。我输入了字符并在下一个标签上标记了一段时间而不能复制你的问题。
我可以在文本框中输入标签的唯一方法是输入Ctrl + Tab。这可能会令人尴尬,但退格会将其删除,因此这不是一个主要问题。您是否可能意外同时按下Ctrl键?
我偶尔会发现,如果我误按了一个键,光标会跳到屏幕上的其他位置。我不太清楚“误压”是什么意思;这似乎与一次按两个键有关。这似乎是现代键盘的一个特征,以及它们如何检测已按下哪个键,因为我在许多不同的计算机上遇到过它。这意味着通过错误地按键,生成控制字符(可能是tab或ctrl + tab)。
我还尝试了下面的工作,通过删除选项卡并转到下一个控件来隐藏问题。
Private Sub TextBox1_Change()
If InStr(1, TextBox1.Text, Chr(9)) <> 0 Then
TextBox1.Text = Replace(TextBox1.Text, Chr(9), "")
TextBox2.SetFocus
End If
End Sub
答案 2 :(得分:1)
作为快速解决方法,请在控件的Exit事件中使用此代码。
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Text = VBA.Replace(TextBox1.Text, VBA.Chr(9), "")
End Sub
答案 3 :(得分:1)
几年来,我同事的计算机中也出现这种情况,而我的工作正常。我已将所有 Checkboxes TabStop 属性设置为 False。现在似乎工作正常。
答案 4 :(得分:0)
将TabKeyBehavior
属性设置为False
以使“标签跳转到下一个字段”行为。
答案 5 :(得分:0)
这可能会解决问题:
Public Sub MoveFocusToNextControl(xfrmFormName As UserForm, _
xctlCurrentControl As control)
Dim xctl As control
Dim lngTab As Long, lngNewTab As Long
On Error Resume Next
' Move focus to the next control in the tab order
lngTab = xctlCurrentControl.TabIndex + 1
For Each xctl In xfrmFormName.Controls
lngNewTab = xctl.TabIndex
' An error will occur if the control does not have a TabIndex property;
' skip over those controls.
If Err.Number = 0 Then
If lngNewTab = lngTab Then
xctl.SetFocus
Exit For
End If
Else
Err.Clear
End If
Next xctl
Set xctl = Nothing
Err.Clear
End Sub