问与答122:如何根据输入数据动态添加提示信息?
excelperfect
Q:在我的Excel工作簿中有两个工作表,工作表“Seatingarrangement”用来排座位,工作表“DataValue”包含座位号、员工号及员工名字等信息。现在,我想在工作表“Seatingarrangement”中输入座位号后,显示关于座位号、员工号及员工名字等信息提示,如下图1所示。
图1
工作表DataValue中的示例数据如下图2所示。
图2
如何实现?
A:肯定要使用VBA代码来实现。
在工作表“Seatingarrangement”的代码模块中,输入下面的代码:
Public sTarget As String
Private Sub Worksheet_Change(ByVal Target As Range)
sTarget = Target.Address
Dim MyVal As String
Dim MyToolTipBody As String
Dim MyToolTipHead As String
Dim Rng As Range
MyVal= Range(sTarget).Value
With Worksheets('DataValue')
Set Rng = .Cells.Find(What:=MyVal,LookIn:=xlFormulas, LookAt:=xlWhole)
If Rng Is Nothing Then
MsgBox '没有这个座位号!请核对!'
Target.ClearContents
Exit Sub
End If
MyToolTipHead = 'Seat No - '& .Range(Rng.Address).Value
MyToolTipBody = '(' &.Range(Rng.Address).Offset(0, 1).Value & ' ) ' &.Range(Rng.Address).Offset(0, 2).Value
End With
With Range(sTarget).Validation
.Delete
.Add Type:=xlValidateInputOnly,AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = MyToolTipHead
.ErrorTitle = ''
.InputMessage = MyToolTipBody
.ErrorMessage = ''
.ShowInput = True
.ShowError = True
End With
End Sub
此时,效果如下图3所示。
图3
注:今天的问题来源于chandoo.org,供有兴趣的朋友参考。