1

我有一个电子表格,第一列中有人员列表,每一行的其余部分都有关于他们的各种信息。我有一个用户表单,它将填充并随后编辑每条记录,当用户单击该人的姓名时,我希望弹出该记录。

例如:

Name        Age    DOB        Postcode
John Smith  55     3/6/1958   RM3 5WO
Mary Jones  22     4/2/1991   RM2 6TP

所以我希望能够点击 John Smith (A2) 来显示一个包含他的年龄、出生日期、邮政编码等字段的表单。我还希望能够使用该表单添加条目,所以它也可以在列表下方至少一行。

我已获得以下代码可供使用:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Address = "$A$2" Then
        frm_tch_staffinfo.Show
    End If

End Sub

我已经尝试在工作表中使用它,但它似乎不起作用 - 当我单击 A2 时没有任何反应。代码中是否有一些错误或我是如何实现它的?(我已将其放入相关工作表的代码中)。

此外,我想扩展目标地址以包括所有名称的范围(其数量可能会改变)和下面的至少一个单元格(但不是 A1 中的标题)。是否可以定义这样的范围?要么简单地选择 A2 及以下,要么使用一个过程来计算已满的单元格并在最后添加或更多。

谢谢你的帮助!

ETA:
我肯定需要 Excel,因为我使用的是电子表格而不是数据库。这是一个简化的示例:数据实际上都是数字,并用于其他工作表中相对复杂的计算。

4

1 回答 1

1

正如评论中提到的:您的代码的第一部分工作得很好(选择更改)。
我刚刚做了测试,没有任何问题。
请注意:

  • 输入正确的表格名称;
  • 将代码放在正确的工作表模块中

至于你的第二个问题,你正在寻找的代码:

Set oRange = Range("A1:A10")
If Not Intersect(Target, oRange) Is Nothing Then
    'do something
End If

如果你想动态设置范围,之前已经有很多帖子了。
查看示例:
获取实际使用范围

于 2013-09-19T11:08:46.333 回答