我正在尝试在VBA中生成拖放功能,以允许用户在UserForm上的ListBox之间移动项目 .
我遇到的问题是,当您单击鼠标按钮并移动鼠标时,ListBox选项会在列表中上下移动 . 当你按下鼠标按钮时,我设法编写了一些捕获选择的行,所以当你将它拖到另一个ListBox时,正确的项目会被删除,但我觉得第一个ListBox的移动突出显示的选择可能会关闭为最终用户提供服务 .
我已经尝试在每次在MouseMove事件上移动鼠标时将选择设置为原始项目,但是当光标与列表中的项目一致时它只是不起作用,它会在您将光标移动到下面时反弹列表 .
Here's a copy of the macro workbook (Excel 2010)
任何人都可以对这如何改进有所启发吗?
编辑注释:这个例子只会向右边的左边框添加项目,我打算在具有多个ListBoxes的UserForm上复制这里找到的任何解决方案,所以我希望有人知道一个很好的机制来实现这个目标 .
2 回答
根据Manish的评论,this link为此详细介绍了一个优雅的解决方案,请查看更好的解决方案的后期帖子,该解决方案对UserForm上的任意数量的ListBox都有效 . 我做了一些调整,以使其在我的情况下更好地工作 .
UserForm上的其他控件抛出的错误不是ListBoxes,为了纠正这个问题,我将
UserForm_Initialize()
更改为:在
ListBoxDragAndDropManager
类中,我添加了以下sub,以便一次只能选择一个ListBox,它使UserForm在使用中看起来更好看,但在功能上没有任何区别:类模块可用于列表框拖放: