我一直在尝试找到一种在鼠标悬停工具提示上放置换行符的方法
我想显示
Full - 从外部完全覆盖 Partial - 仅覆盖来自外部的非空白 No - 仅在空白单元格上输入数据
至
Full - 从外部完全覆盖
Partial - 仅覆盖来自外部的非空白
No - 仅在空白单元格上输入数据
有什么办法可以做到这一点
顺便说一句,使用 Excel 2010
ControlTipText
excel 会简单地忽略属性中的换行符/回车符。一种可能的解决方法是使用隐藏的多行标签(格式化为工具提示),其可见性通过使用关联控件和用户窗体的MouseMove
事件来切换 - 即SomeControl_MouseMove
显示标ParentForm_MouseMove
签并再次隐藏它(可能在延迟之后)。如果用户非常快速地移动指针,这种方法可能会有点命中或错过。另一个(更好的,恕我直言)解决方案是在表单的某处有一个永久可见的标签或文本框对象,其标题/值根据鼠标指针当前位于的任何控件而变化,再次使用MouseMove
事件。
编辑:如果我怀疑您的工具提示与组合框/列表框控件相关联,您可能需要考虑将选项描述放在控件的第二列中?
我试图让它变得简单(没有 api,非常短的代码):
Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'If Events Then
Dim list_index As Long, Zero As Long
Zero = Me.ListBox1.TopIndex
list_index = Y \ (8 + 2) + Zero ' ; 8 si the size of Font ; note \ is a integer division
'Me.label1 = Y 'test label
'Me.label2 = list_index 'test label
'Me.label3 = Zero 'test label
With Me.ListBox1
.ControlTipText = .List(list_index, 1)
End With
'End If
End Sub
这在 Access VBA 中有效 - 没有理由在 Excel VBA 中无效:输入控件提示文本时,无论您想在何处换行,只需按 Shift-Enter。
由于我们在其中输入控制提示文本的字段(在 Access 中)一次只显示一行,因此您必须使用向上和向下箭头滚动浏览该一次一行字段中的文本以确保您已正确输入所有内容。