问与答123:如何动态更新提示信息?
excelperfect
Q:在《问与答122:如何根据输入数据动态添加提示信息?》中,我们实现了根据工作表“DataValue”中座位号、员工号及员工名字等信息,在工作表“Seatingarrangement”中的座位号单元格显示关于座位号、员工号及员工名字等信息提示,如下图1所示。
图1
工作表DataValue中的示例数据如下图2所示。
图2
现在,我想要当工作表DataValue中的数据改变后,工作表“Seatingarrangement”中相应的信息实时更新。
如何实现?
A:同样要使用VBA代码来实现。
在工作表DataValue的代码模块中,输入下面的代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strVal As String
Dim strToolTipBody As String
Dim strToolTipHead As String
Dim rng As Range
Dim ws As Worksheet
If Target.Column = 2 Then
strVal = Target.Offset(0, -1).Value
strToolTipHead = 'Seat No - '& strVal
strToolTipBody = '(' &Target.Value & ' ) ' & Target.Offset(0, 1).Value
ElseIf Target.Column = 3 Then
strVal = Target.Offset(0, -2).Value
strToolTipHead = 'Seat No - '& strVal
strToolTipBody = '(' &Target.Offset(0, -1).Value & ' ) ' & Target.Value
Else
Exit Sub
End If
Set ws = Worksheets('Seatingarrangement')
Set rng = ws.Cells.Find(What:=strVal,LookIn:=xlFormulas, LookAt:=xlWhole)
If rng Is Nothing Then
MsgBox ' 暂时没有找到这个座位号!'
Exit Sub
End If
With ws.Range(rng.Address).Validation
.Delete
.Add Type:=xlValidateInputOnly,AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = strToolTipHead
.ErrorTitle = ''
.InputMessage = strToolTipBody
.ErrorMessage = ''
.ShowInput = True
.ShowError = True
End With
End Sub
此时,效果如下图3所示。
图3
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。