无模式MsgBox,错误捕获,.Find
我有一个子例程search另一个工作簿中的string的出现。 我试图得到一个错误消息,如果找不到string(这很可能是由于拼写错误)popup,如vbModeless,并允许用户点击search表单中的单元格与正确的值。 然后我想用新的价值恢复search。
我现在坚持使我的简单MsgBox是无模式的。 谁能帮忙? 到目前为止,我已经(简化):
With ... On Error GoTo UserSelect celladdress = .Range("a1:bb100").Find("searchstring").Address
而我的错误标签:
UserSelect: MsgBox("Select the cell with the correct spelling") vbModeless newstring = ActiveCell.Value searchstring = newstring Resume
我认为这是无模式MsgBox给我的悲伤。
我不相信你可以使用msgbox vbModeless。 这是用于用户表单的Show方法。
你可能需要做的是创build一个用户表单,它有一个refedit控件和一个button。 然后,他们可以用refedit控件选取一个单元格。 当用户单击该button时,在窗体上设置一个公共variables,并选中单元格引用。
然后,您需要在用户表单上使用“.Show vbModal”,并从公共variables中读取它们所选的单元格。
编辑:
其实,你不应该需要公共variables,因为refedit控件应该是表单的公共属性。
我对这里的要求并不十分确定。 给定dgo的searchstring,以及包含鸟 , 猫和狗的单元格的工作表。 你想让用户:
(a)编辑包含狗的单元格,改为使用dgo
这将使用由andynormancx概述的模式forms和RefEdit控制。 就像一个MsgBox,模式窗体暂停macros直到窗体closures
(b)允许用户点击包含狗的细胞,然后用狗作为search项重新运行search
这更复杂。 我认为你需要在这里看事件。 这很好,如果你的子程序几乎是独立的,但如果它是一个更大的程序的一部分,那么这可能需要大量的重写