我可以使用一些帮助,因为我是Excel VBA的新手。我有一个两页的工作簿,我想帮助一些VBA代码,它将电话#直接放置在下面的单元格中,一旦从上面单元格的下拉列表中选择了一个名称。 此下拉列表中的姓名将来自第一张表格“联系人”上的列A,而电话号码将来自同一联系人表格中的列B。 我的第二张工作表“Schedule”是一个很大的工作表,所以我希望在这个下拉列表中选择一个名字的时候运行这段代码,而不管这个工作表上的单元格位置如何。 任何和所有这方面的帮助将不胜感激,因为我有点卡住了这一点。 再次感谢, 兰迪Excel VBA:使用查找来定位和放置电话#根据名称选择
回答
假设:您的工作表的代码名称为wshContacts。在该表格中,您有一个名称列表,并且您已将该名称命名为“ContactNames”。在该范围旁边的单元格中是电话号码。在您的时间表中,您将数据验证下拉到指向ContactName命名范围的某些单元格中。
基于此,将此代码放置在日程表的代码模块中(右键单击工作表选项卡并选择查看代码)。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim oValid As Validation
Dim rFind As Range
Dim sRefersTo As String
'The named range with your contact names
Const sCNAMES As String = "ContactNames"
Set oValid = Target.Validation
'Trap error where there's no validation in cell
On Error Resume Next
sRefersTo = oValid.Formula1
On Error GoTo 0
'If it's a DV pointing to contact names
If sRefersTo = "=" & sCNAMES Then
'Find the name in the list
Set rFind = wshContacts.Range(sCNAMES).Find(Target.Value, , xlValues, xlWhole)
'if the name was found
If Not rFind Is Nothing Then
'put the next cell (phone number) in the cell below the changed cell
Application.EnableEvents = False
Target.Offset(1, 0).Value = rFind.Offset(0, 1).Value
Application.EnableEvents = True
End If
End If
End Sub
这会针对您在计划表中所做的每一项更改运行。但是,如果已更改的单元格的数据验证指向联系表单上的命名范围,它只会实际执行某些操作。
有几件事值得注意。这段代码并没有考虑改变多个单元格,它并不在乎下面单元格中是否有东西(它会覆盖它)。所以你可能需要适应这些情况。
简单的VLOOKUP公式将做到这一点,不需要VBA。
如果与下降的细胞向下是A1,然后在A2这个公式可能做的伎俩:
= IF(A1 = “”, “”,VLOOKUP(A1,Sheet2的$ A:$ B,2,0))
谢谢你的公式,但是我需要保留所有单元格的'可用'名称以上和以下,因为它是一个调度程序,我们将无法预测他们将使用哪个时间(行)。 VBA代码允许我们使用任何行,然后自动将手机放置在下方。你会碰巧能够用任何VBA代码来帮助我吗?再次感谢,Randy – ExcelForFreelancers 2012-04-03 08:53:28
你为什么要用电话号码替换当前单元格下面的名字? – Aprillion 2012-04-03 09:01:13
嗯....我们有一列可用的景点,以便用户可以输入约会,比如1:00,1:30,2:00和2:30。每个约会是一个小时。如果我们在1:30输入姓名,则为1小时。约会,我们不再需要2点时间段。然后,我们可以将有用的信息,如电话号码#插入该插槽中。我们不能在那里使用一个公式,因为我们不知道最初将使用哪个时隙。 (注意:每个单元格允许用户输入任何文本,而不仅仅是联系人下拉列表中的可用内容)另外,如果名称已经存在于时间段中,用户不一定会安排预约。 – ExcelForFreelancers 2012-04-03 09:19:10
- 1. 根据机器名称选择设置
- 2. Excel VBA查找/记录用户选择
- 3. 使用OpenNLP查找位置名称
- 4. 如何根据文本选择位置来定位div
- 5. 在excel中根据列和行名称查找单元格 - Java
- 6. 根据工作表中的位置选择图表对象(VBA)
- 7. 选择多列使用头名称 - Excel的VBA
- 8. 获取Excel的文件位置和名称VBA
- 9. 查找来电位置,同时使用安卓手机通话时使用
- 10. 根据ID选择一个名称
- 11. 根据名称选择顶点
- 12. 使用Watir,我如何使用名称和值来选择无线电控制?
- 13. 获取选定的数据透视表名称 - Excel VBA
- 14. 的Excel/Excel VBA中剪切和复制复位单元名称
- 15. Excel VBA - 根据列名复制数据
- 16. 使用电话号码查找电话
- 17. Excel中查找名称
- 18. Excel vba用户名/密码查找
- 19. 如何根据名称而不是索引来选择订单?
- 20. 查找位置名称swift地图
- 21. Excel vba查找和替换
- 22. 如何找到使用VBA的范围选择上的单元格名称
- 23. 如何使用Java获取和放置Excel的列名称?
- 24. 获取电子邮件和电话号码的名称定义,而不使用选择意图
- 25. 根据函数名称生成#REF的Excel VBA函数?
- 26. 根据条件选择名称的Mysql查询
- 27. 查找列标题名称,并选择下面列标题(Excel的VBA)的所有数据
- 28. 根据会话选择
- 29. API查找企业名称,给定一个特定的位置?
- 30. 使用NDepend来查找特定对象类型放置在System.Web.Caching.Cache中的位置
非常感谢@Dick 。我认为这会很好。我非常感谢帮助。 – ExcelForFreelancers 2012-04-03 14:51:53
嗨,我能够找出问题,因为我有书面工作表名称“联系人”,而不是指定的工作表名称“Sheet11” 再次感谢, – ExcelForFreelancers 2012-04-06 02:56:33