浮动消息/评论框

时间:2015-03-23 12:30:20

标签: excel vba excel-vba

所以我要做的就是创建一个浮动文本框,它位于电子表格的右侧。当用户选择行/单元格时,它会在那里放置一条评论或消息,其中包含有关该单元格的详细信息,而不是一个小的评论框。

我曾尝试使用UserForm Box,但它并不是我想要的。

示例:

用户选择单元格A4,我希望在选择该单元格时以浮动文本读取消息。然后,如果用户选择单元格B6,则该框中将显示不同的消息。

这有意义吗?

更新

以下代码在选择某个单元格时显示UserForm框:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Definition As String

If Intersect(Target, Range("C6:D6")) Is Nothing Then Exit Sub
Select Case Target.Row
  Case 22
    Definition = "Text Here"
  Case 23
    Definition = "Text Here Again"
End Select

UserForm1.Label1.Caption = Definition
UserForm1.Show

End Sub

我不想使用UserForm框,因为它在工作表本身上不是固定的。我想要一个文本框,它总是出现在工作表的右侧,以便在选择单元格时显示设置的消息或上下文。它将与存储在实际单元格中的内容不同。

2 个答案:

答案 0 :(得分:2)

使用数据验证消息。只要您点击一个单元格,这种类型的消息就会“弹出”:

enter image description here

答案 1 :(得分:0)

您可以直接在工作表中放置Label或TextBox控件 - 确保它是ActiveX控件,而不是Forms控件 - 并使用工作表的SelectionChange事件动态定位它:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With Me.lblText

    .Visible = False

    Select Case Target.Row     Case 22         .Caption = "Text Here Again"     Case 23         .Caption = "Text Here Again"     Case Else         .Visible = False         Exit Sub     End Select

    ' Place the label to the right of the target cell     .Left = Target.Left + Target.Width

    ' Or place the label in the far left of the window     '.Left; =; Application.ActiveWindow.VisibleRange.Width; -; .Width

    .Top = Target.Top - 0.75 ' cell borders

    .Visible = True

End With

End Sub

 

一些提示:

  • 确保'展示位置'标签的属性是2 (XlPlacement.xlMove),因为其他值可以自由浮动或 移动和尺寸。
  • 我强烈建议您将控件的背景颜色设置为 & H80000004&,菜单和表单的预定义Windows方案颜色 背景;同样,前景为& H80000008&,菜单文本 颜色。这可确保具有自己颜色的用户的可见性 设置,并明确支持指定可访问或用户的用户 辅助配色方案,以改善视力障碍。

  • 我的代码依赖于您在VBA中支持事件过程的工作表,以及 在ActiveX控件上。它不会在.xlsx工作表中工作,它可能是 如果您的操作被阻止(或伴随警告对话) 环境有严厉的安全政策。

  • 使用工作表可能会影响复制和粘贴 SelectionChange事件。

  • 右键单击设计视图中的控件,然后选择格式控件'菜单 并取消选中' Print Control' - 如果用户打印表格,他们就会# 想要查看单元格内容,而不是标签。
  • 另外:标签选择和编辑控件的方式 它坐在上面。也许你想要它向右4-5mm,所以用户 可以让鼠标进入该单元格。或者,在标签中执行此操作 单击()或MouseMove事件:

    Me.lblText.Visible = False
 

您可以从所有这些中得出一个明显的结论:原生评论或数据验证标签比使用表单和ActiveX控件更好。