VBA 中COMBOBOX下拉列表的收起

<span style="background-color: rgb(255, 255, 255);"></span><pre name="code" class="vb"><span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在使用VBA的COMBOBOX组件的时候,想制作一个点击单元格即自己弹出下拉列表,点击其它单元格,即收起列表的功能。</span>

 

COMBOBOX提供了DROPDOWN的方法,但是却没有提供收起列表的方法,所以如果你点击了第一个单元格,自动弹出列表,并且你没有选择其中任何一项的时候,再点击第二个单元格,下拉列表是不会自己收起来的……

在网上也搜了很多的解决办法,包括mousemove方法和sendkeys方法的联合使用,或者定义全局变量,判断前后两次点击的单元格是否是同一个单元格等等,都没能完全的解决问题,后经自己尝试,找到了下面的办法,特记录如下:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

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,整个组件将会被更新到当前位置,然后将点击的单元格更新,再将列表弹出来。


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值