单击单元格时打开用户表单

时间:2013-09-19 10:52:15

标签: excel vba popup userform

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

e.g:

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

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

我已经获得了以下代码:

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,因为我的用法是电子表格而不是数据库。这是一个简化的例子:数据实际上都是数字的,并且在其他工作表中用于相对复杂的计算。

1 个答案:

答案 0 :(得分:1)

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

  • 输入正确的表格名称;
  • 将代码放入正确的图纸模块

关于你的第二个问题,你要找的代码是:

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

如果你想动态设置范围,之前有很多帖子。
查看例如:
Getting the actual usedrange