Excel vba删除单元格为空时的工具提示
我有一个vba,当我点击一个包含“ID”的单元格时,它会在另一个工作表中搜索该“ID”,并用该工作表中的信息创建一个工具提示。它的工作原理如下:Excel vba删除单元格为空时的工具提示,excel,vba,Excel,Vba,我有一个vba,当我点击一个包含“ID”的单元格时,它会在另一个工作表中搜索该“ID”,并用该工作表中的信息创建一个工具提示。它的工作原理如下: 如果ID存在,单击时显示工具提示。如果在空单元格中单击,则隐藏工具提示 如果ID不存在,则不显示任何内容 我的问题仍然存在于以下步骤中: 如果我有一个存在的ID并将其从单元格中删除,工具提示将保留在那里,但没有信息。每次单击该单元格时,它都会显示空的工具提示。我需要它不要显示任何类似于该单元格为空的内容 我的代码: Public sTarget
- 如果ID存在,单击时显示工具提示。如果在空单元格中单击,则隐藏工具提示
- 如果ID不存在,则不显示任何内容
- 如果我有一个存在的ID并将其从单元格中删除,工具提示将保留在那里,但没有信息。每次单击该单元格时,它都会显示空的工具提示。我需要它不要显示任何类似于该单元格为空的内容
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 String
On Error Resume Next
MyVal = "*" & Range(sTarget).Value
With Worksheets("Sheet2")
On Error Resume Next
Rng = .Cells.Find(What:=MyVal, LookIn:=xlFormulas, LookAt:=xlWhole).Address
MyToolTipHead = 'Code for tooltip header
MyToolTipBody = 'Code for tooltip body
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 = False
End With
End Sub
关于如何实现这一点,有什么建议吗?谢谢。我有两个选择供您选择:
Private子工作表\u更改(ByVal目标作为范围)
如果Target.value=”“,则
Target.Validation.Delete
如果结束
端接头
当您从单元格中删除ID时,将触发此操作;然后您的Target.Value将等于“”,因此任何验证也将自动删除;并删除工具提示
意外的结果是,这将删除所有验证;因此,如果您希望保留某些其他验证(如数据类型、列表),则必须将其重新添加到单元格中;您可以为此编写一个子例程(例如sub-putValidationBack(x_在as范围内)…)
选项2
在当前代码周围添加IF块:
如果范围(sTarget).Value=”“那么
带范围(sTarget)。验证
.删除
以
其他的
“一切都在这里,包括你的错误简历
如果结束
与上面相同的结果这将删除所有验证,因此您需要将任何要保留的验证放回原位。与其跳过错误(无论如何都不是好的做法),不如检查是否找到了值(不是什么都没有),如果找到了,只显示提示。也许您应该使用SelectionChange。但是如果我尝试使用“如果不是MyVal,则”我一直收到“类型不匹配”错误。@SJR您能详细说明SelectionChange的用法吗?您说您有“我在单元格中单击”时可以使用的代码吗“但这就是SelectionChange所做的。您使用的是仅在更改单元格时激活的更改。这就是您想要的吗?重新查找时,您需要为查找操作分配一个范围对象,并检查这是否为空(您实际上似乎没有使用
Rng
).我只是用rng在单元格中搜索。我以后不会用它,因为它只用于搜索。