我的一个主表中有一个declare @tmp varchar(10)=CHAR(10)
EXEC SearchAndReplace @tmp, ' + '
ActiveX
,用于控制/更新一系列图表。
Combobox
我注意到,当我单击Private Sub cmBoxSelect_GotFocus()
Application.ScreenUpdating = False
With Me.cmBoxSelect
.List = Array("Grand Total", "Prod1", "Prod2", "Prod3", "Prod4", "Prod5")
.ListRows = 6
.DropDown
End With
Application.ScreenUpdating = True
End Sub
Private Sub cmBoxSelect_Change()
'series of codes which manipulates the charts, based on selection...
End Sub
并选择其内容之一时,它会在选择项上留下蓝色突出显示。为了防止这种情况,我添加了:
ComboBox
它成功删除了突出显示。
但是,它有一个怪异的缺点。一旦用户没有选择任何内容,Private Sub cmBoxSelect_DropButtonClick()
Application.ScreenUpdating = False
ActiveCell.Activate
Application.ScreenUpdating = True
End Sub
不会自动关闭(一旦组合框处于活动状态,并且用户单击工作表中的任何单元格,它就不会关闭)。在添加cmbSelect
事件之前,它一直在工作。
我是否错过了上面的任何内容或任何错误的步骤?感谢您的输入!
EDIT#1
似乎我已经通过反复试验找到了解决方案。我仅添加了一个空白Label,并选择了它,以便在发生更改时将焦点从ComboBox中移出。我也将DropButtonClick
更改为DropButtonClick
。
LostFocus
答案 0 :(得分:0)
您需要在多个事件中将SelLength设置为0,以避免突出显示:
如此:
Me.cmBoxSelect.SelLength = 0
在:
Private Sub cmBoxSelect_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Private Sub cmBoxSelect_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Private Sub cmBoxSelect_LostFocus()
Private Sub cmBoxSelect_DropButtonClick()
Private Sub cmBoxSelect_Change()
Private Sub cmBoxSelect_GotFocus()
(您还可以添加Me.cmBoxSelect.SelStart = 0)
答案 1 :(得分:0)
让我们尝试一下: 不是通过更改触发事件,而是通过dropbuttonclick
Private Sub changingComboBox(String s)
'series of codes which manipulates the charts, based on selection...
End Sub
Private Sub cmBoxSelect_DropButtonClick()
Dim s As String
s = cmBoxSelect.SelText
If (cmBoxSelect.SelText = cmBoxSelect.Value) Then
cmBoxSelect.Value = ""
cmBoxSelect.Value = s
Else
call changingComboBox(cmBoxSelect.Value)
End If
End Sub
那怎么样?