VBA中COMBOBOX下拉列表的收起
<span ></span><pre name="code" class="vb"><span style="font-size: 18px; font-family: Arial, Helvetica, san
COMBOBOX提供了DROPDOWN的⽅法,但是却没有提供收起列表的⽅法,所以如果你点击了第⼀个单元格,⾃动弹出
列表,并且你没有选择其中任何⼀项的时候,再点击第⼆个单元格,下拉列表是不会⾃⼰收起来的……
在⽹上也搜了很多的解决办法,包括mousemove⽅法和sendkeys⽅法的联合使⽤,或者定义全局变量,判断前后两次点击的单元格是否是同⼀个单元格等等,都没能完全的解决问题,后经⾃⼰尝试,到了下⾯的办法,特记录如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
vba listbox控件详解With ComboBox1
.Visible = False
If Target.Count = 1 Then
If Target.Column = 2 Then
.Visible = True
.Width = Target.Width + 15
.Left = Target.Left + Target.Width
.Top = Target.Top
.Height = Target.Height
.Activate
Target.Activate
.DropDown
Else
.Visible = False
End If
End If
End With
End Sub
解决办法实际就是运⽤activate这个⽅法,因为在实际中发现,COMBOBOX组件实际是被分离了两个部分,分别是下拉按钮和下拉列表,所以就算你把VISIBLE调成false,也只隐藏了下拉按钮,列表还在。
所以直接就不隐藏,让它整个组件处于活动状态,那么当你点击不同的单元格的时候,就会随着你的点击更新到对应的位置。这⾥先将控件activate,整个组件将会被更新到当前位置,然后将点击的单元格更新,再将列表弹出来。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。