【发布时间】:2016-02-03 23:04:02
【问题描述】:
我遇到了一个奇怪的问题。我在 Excel 中有一个用户输入表单。 此表单提供基本的 CRUD 功能来编辑表中的列表。现在这个用户窗体也有一个列表框,它显示了所有带有 Id 的条目和一些基本信息(所以你知道哪个条目是哪个)。现在我想要的是,如果你在普通的excel表格中选择了一行,然后打开InputForm,表格中的选定行也应该在InputForm的listBox中被选中。
我是这样做的:
If Selection.Row >= StartRow() Then
ListBoxAll.listIndex = Selection.Row - StartRow()
Else
ListBoxAll.listIndex = 0
End If
如果我每次单击按钮都打开 Ui,这将非常有用。但是,如果我尝试使用双击前事件打开表单。我有一个偏移量。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
UserFormInput.Show
End Sub
现在是奇怪的部分。如果我检查 Selection.Row 的值,通过 MessageBox 显示它,一切正常!但是,一旦我删除 MessageBox,它就会再次损坏。
If Selection.Row >= StartRow() Then
ListBoxAll.listIndex = Selection.Row - StartRow()
MsgBox Selection.Row
Else
ListBoxAll.listIndex = 0
End If
如果我把消息框放在哪里都没关系。
那么问题有人遇到过同样的问题吗?有人知道解决方案或解决方法吗? (我不想显示消息框!)
所以我添加了一些截图以便于理解。
更新我认为它与双击后的焦点有关,它(可能)在双击的单元格上。如果我放出一个 MsgBox 就会改变
【问题讨论】:
-
等一下,您有两个列表框(具有相同的条目或只是一些相同的条目?),当您选择一行时,您想在第二个列表框中选择同一行(或条目?) ?你用“If Selection.row >= StartRow()”行完成了什么?
-
不抱歉,我有一个包含数据的表,我有一个带有列表框的 (CRUD) 用户表单,它显示足以知道您正在编辑哪个条目,在那里您可以选择一个入口。所以你不必一直关闭和打开它
-
我更改了上面的文本,为了使其易于理解,我尝试在休息后发布一些屏幕截图 =) StartRow() 返回表中的第一行实际数据(我有一些标题和按钮在实际数据之前冻结)
-
所以每次显示表单时,列表框中的选中项都需要根据excel表格的选择进行更新。你的工作表叫什么?你的表格叫什么?
-
我的表单名为 UserFormInput,我的工作表名为 Tabelle1。 (还算是一个原型)