在Excel中,我有一个定义的名称范围,其值如下:
+----------+------+
| BodyPart | Code |
+----------+------+
| Head | 1 |
| Torso | 2 |
| Abdomen | 3 |
| Ankle | 4 |
+----------+------+
由于代码难以记忆,我尝试设置数据验证以在下拉列表中显示BodyParts,并在选中后,在电子表格中显示代码。
这是如何完成的?
答案 0 :(得分:1)
这是一个解决您问题的vba解决方案(通过链接解释如何在需要时执行各种操作):
BodyPart
(将范围设置为工作簿级别)BodyPartCode
(将范围设置为工作簿级别)=BodyPart
Worksheet Module
中。每次用户更改工作表上的单元格值时,下面的代码都会运行。如果更改的单元格与DropDown列表位于同一列中,则代码将根据输入的正文部分查找正文部分代码,然后从单元格中删除数据验证,以便可以在单元格中输入代码而不会破坏身体部位的验证下拉。
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column = 6 Then 'assumes drop-downs listed in column F, change as needed
Dim sPart As String, sCode As String
sPart = .Value2
sCode = Application.WorksheetFunction.VLookup(sPart, Range("BodyPartCode"), 2, 0)
Application.EnableEvents = False
.Validation.Delete
.Value = sCode
Application.EnableEvents = True
End If
End With
End Sub