我有一个子程序,用于在另一个工作簿中搜索字符串的出现位置。如果无法找到字符串(这很可能是由于拼写错误),我正在尝试弹出一条错误消息,如vbModeless,并允许用户点击搜索到的工作表中的单元格并使用正确的值。然后我想用新值继续搜索。
我现在正忙着让我简单的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让我感到悲伤。
答案 0 :(得分:3)
我不相信你可以在msgbox中使用vbModeless。这适用于用户表单的Show方法。
您可能需要做的是创建一个具有refedit控件和按钮的用户表单。然后他们可以使用refedit控件选择一个单元格。当用户点击按钮时,在表单上设置一个公共变量,单元格引用所选的。
然后你需要在用户表单上使用“.Show vbModal”,并从表单公共变量中读取他们选择的单元格。
编辑:
实际上,您不应该需要公共变量,因为refedit控件应该是表单的公共属性。
答案 1 :(得分:0)
我对这里的要求并不是100%肯定。给定 dgo 的搜索字符串和包含 bird , cat 和 dog 的单元格的工作表。您希望用户:
(a)编辑包含 dog 的单元格并将其更改为 dgo 而不是
这将使用andynormancx概述的模态形式和RefEdit控件。与MsgBox一样,模态窗体暂停宏直到窗体关闭
(b)允许用户点击包含 dog 的单元格,然后使用 dog 作为搜索词重新运行搜索
这更复杂。我想你需要在这里查看事件。如果你的子程序几乎是独立的,但是如果它是一个更大的程序的一部分,那么这可能需要大量的重写