所以我要做的就是创建一个浮动文本框,它位于电子表格的右侧。当用户选择行/单元格时,它会在那里放置一条评论或消息,其中包含有关该单元格的详细信息,而不是一个小的评论框。
我曾尝试使用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框,因为它在工作表本身上不是固定的。我想要一个文本框,它总是出现在工作表的右侧,以便在选择单元格时显示设置的消息或上下文。它将与存储在实际单元格中的内容不同。
答案 0 :(得分:2)
使用数据验证消息。只要您点击一个单元格,这种类型的消息就会“弹出”:
答案 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
一些提示:
我强烈建议您将控件的背景颜色设置为 & H80000004&,菜单和表单的预定义Windows方案颜色 背景;同样,前景为& H80000008&,菜单文本 颜色。这可确保具有自己颜色的用户的可见性 设置,并明确支持指定可访问或用户的用户 辅助配色方案,以改善视力障碍。
我的代码依赖于您在VBA中支持事件过程的工作表,以及 在ActiveX控件上。它不会在.xlsx工作表中工作,它可能是 如果您的操作被阻止(或伴随警告对话) 环境有严厉的安全政策。
使用工作表可能会影响复制和粘贴 SelectionChange事件。
Me.lblText.Visible = False
您可以从所有这些中得出一个明显的结论:原生评论或数据验证标签比使用表单和ActiveX控件更好。