【发布时间】:2021-07-06 01:05:54
【问题描述】:
我有一张要分配工作的人员表:
我想使用BeforeDoubleClick 事件来调用显示所有相关字段的表单,以便用户可以查阅/更正这些字段。
表格如下所示:
在相应的工作表中,我有以下代码:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("tblTime")) Is Nothing Then
Cancel = True
frmAssignNewWork.Show
frmAssignNewWork.Controls("cboPerson").value = Cells(Target.Row, 2).value
frmAssignNewWork.Controls("cboWork").value = Cells(Target.Row, 4).value
frmAssignNewWork.Controls("txtStartDate").value = Cells(Target.Row, 5).value
frmAssignNewWork.Controls("txtEndDate").value = Cells(Target.Row, 6).value
frmAssignNewWork.Controls("txtFocus").value = Cells(Target.Row, 7).value * 100
它有点工作,因为它显示了表单,并在正确的位置填充了字段,但是它使用在 PREVIOUS 双击时选择的字段填充了表单。
澄清一下,如果我第一次双击,表单将出现空白字段。
然后,如果我再次双击同一个单元格,它将在正确的字段中显示该行的正确信息。
但是,如果我在不同的行上双击第三次,它会显示前一行的信息,等等。
我认为它必须与“之前”双击的概念有关,但如果我插入一个检查,例如:
MsgBox(目标地址)
它总是提供正确的地址...
有人可以帮忙吗? :)
【问题讨论】:
-
将
MsgBox "!"放在frmAssignNewWork.Show之后。这有望解释它。 -
尝试将
frmAssignNewWork.Show移动到程序的末尾 -
谢谢 Алексей Р,这行得通!我原以为在表单上设置字段的值会刷新它们,但显然不是:)。我还错误地认为我必须先显示表单才能更新字段
-
@MoonLunatic 是的,它确实刷新了它们。它不适合您,因为该代码首先没有运行until you close the form,如果您输入the
MsgBox,您会看到它。否则,完全可以更改已显示表单上的值。