[英]Floating Message/Comment Box
因此,我几乎要做的就是在电子表格的右侧创建一个浮动文本框。 当用户选择行/单元格时,它将在其中放置带有有关该单元格详细信息的注释或消息,而不是一个小的小注释框。
我试图使用UserForm Box,但它并不是我真正想要的。
例:
用户选择单元格A4,当选择该单元格时,我希望显示一条以浮动文本形式显示的消息。 然后,如果用户选择单元格B6,则该框中将显示另一条消息。
这有意义吗?
更新:
当选定某个单元格时,以下代码显示一个“用户窗体”框:
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框,因为它在工作表本身上不是固定的。 我希望它是一个始终显示在工作表右侧的文本框,以在选择单元格时显示设置的消息或上下文。 这将与实际单元格中存储的内容不同。
使用数据验证消息。 每当您单击一个单元格时,这种消息就会“弹出”:
您可以将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控件更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.