在用户窗体中使用点模式

3
我注意到使用RefEdit控件会导致Excel进入“点”模式以选择适当的范围。(您会看到“准备就绪”状态变为“点”,并且当前引用在当前视图中变得动画化)。
我的问题是,有没有办法轻松复制这种模式?我遇到了问题,因为我的表单不是模态的,而在使用RefEdit控件后回到它时,Excel就会锁定(已知问题)。 我想仅将Modal设置为true可能会解决它,但是了解更好的解决方法会更好。

1
我之前已经讲过这个问题了 :) 可能是重复的 VBA对话框选择不同工作簿中的范围 - Siddharth Rout
哎呀,我没有考虑到那个问题,因为我在选择工作簿之外没有遇到麻烦。 ;) 实际上,再想一想,这个问题也适用于这里,因为当表单处于活动状态时,切换工作簿是非常困难的。 - Tsaukpaetra
因此,您可以使用该表单来切换工作簿 :) - Siddharth Rout
是的,但我面临的问题不在于不同的工作簿之间,而仅仅是在使用RefEdit控件时保持表单非模态。我只使用一个工作簿,但希望在仍然保持表单可用的同时具有进行更改等操作的能力。 我现在的解决方法是将表单的状态保存在隐藏工作表中,并提供一个按钮来重新显示表单,以便用户关闭它后继续在工作簿上工作。虽然不是最理想的方法,但大部分情况下它都可以使用。 - Tsaukpaetra
那么,如果你不卸载表单,而是将其隐藏,然后根据需要以模态方式再次显示它呢?即,为使用有问题的控件使其模态,然后当控件失去焦点时,隐藏表单并以非模态方式重新打开它... - tobriand
这个问题已经有一段时间了。如果控件支持订阅焦点事件,我认为你的想法可能会解决模态模式问题。然而,那并不能真正解决手动通过代码输入更多的 Point 的问题。 - Tsaukpaetra
1个回答

1

是的。当你使用application.inputbox时,你会注意到当你点击范围中的第一个单元格时,模式从输入变为点选。你可以在立即窗口中使用以下代码进行测试(其中Type:=8指定了一个范围):

?application.inputbox("Enter a range:","Range", Type:=8).address

如果您更改选择,输入框的显示内容也会随之更改。

如果您可以接受为此弹出另一个对话框,那么我认为这是一个不错的解决方法。当然,这会规避问题,因为它使InputBox模态而不是Form,所以Excel不会在其上进行奇怪的操作。感谢您将其放在答案中。 - Tsaukpaetra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接