Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2986|回复: 10

[已解决]如何将窗体内的标签进行颜色设置

[复制链接]
发表于 2013-1-18 20:34 | 显示全部楼层 |阅读模式
标识提醒设置(窗体).rar (21.5 KB, 下载次数: 11)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-1-18 21:12 | 显示全部楼层    本楼为最佳答案   
  1. Sub SetColor(ByVal controlname As String)
  2.     Dim top&, left&
  3.     Dim ct
  4.     top = Me.Controls(controlname).top
  5.     left = Me.Controls(controlname).left
  6.     For Each ct In Me.Controls
  7.         If ct.top = top Or ct.left = left Then
  8.             ct.BackColor = &HFF&
  9.         Else
  10.             ct.BackColor = &H8000000F
  11.         End If
  12.     Next
  13. End Sub

  14. Private Sub Label19_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  15.     Call SetColor("label19")
  16. End Sub
复制代码
如果能够取鼠标在窗体中的位置,就更好办了。
回复

使用道具 举报

发表于 2013-1-18 21:20 | 显示全部楼层
选中所有的标签,设置ENABLE为FALSE,就可以了。
  1. Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  2.     Dim ct
  3.     For Each ct In Me.Controls
  4.         With ct
  5.         If .left <= X And .left + .Width >= X And .top <= Y And .top + .Height >= Y Then
  6.             SetColor (ct.Name)
  7.             Exit For
  8.         End If
  9.         End With
  10.     Next
  11. End Sub
复制代码
回复

使用道具 举报

发表于 2013-1-18 21:22 | 显示全部楼层
再改下,颜色没有重置。
  1. Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  2.     Dim ct
  3.     For Each ct In Me.Controls
  4.         With ct
  5.         If .left <= X And .left + .Width >= X And .top <= Y And .top + .Height >= Y Then
  6.             SetColor (ct.Name)
  7.             Exit Sub
  8.         End If
  9.         End With
  10.     Next
  11.     For Each ct In Me.Controls
  12.         ct.BackColor = &H8000000F
  13.     Next
  14. End Sub
复制代码
回复

使用道具 举报

发表于 2013-1-18 21:26 | 显示全部楼层
添加鼠标左键要求
Button值,可以反应出是鼠标按了哪个键。
fmButtonLeft 1 按下左键。
fmButtonRight 2 按下右键。
fmButtonMiddle 4 按下中键。
  1. Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  2.     Dim ct
  3.     If Button = 1 Then
  4.         For Each ct In Me.Controls
  5.             With ct
  6.                 If .left <= X And .left + .Width >= X And .top <= Y And .top + .Height >= Y Then
  7.                     SetColor (ct.Name)
  8.                     Exit Sub
  9.                 End If
  10.             End With
  11.         Next
  12.         For Each ct In Me.Controls
  13.             ct.BackColor = &H8000000F
  14.         Next
  15.     End If
  16. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-1-18 21:29 | 显示全部楼层
hwc2ycy 发表于 2013-1-18 21:12
如果能够取鼠标在窗体中的位置,就更好办了。


谢谢,可以了。谢谢!
回复

使用道具 举报

发表于 2013-1-18 21:30 | 显示全部楼层
LABEL没法给焦点,这个就不好办。
回复

使用道具 举报

 楼主| 发表于 2013-1-18 22:15 | 显示全部楼层
hwc2ycy 发表于 2013-1-18 21:30
LABEL没法给焦点,这个就不好办。


用这样可以,只是代码多,能否简化一下。谢谢!

Sub SetColor(ByVal controlname As String)
    Dim top&, left&
    Dim ct
    top = Me.Controls(controlname).top
    left = Me.Controls(controlname).left
    For Each ct In Me.Controls
        If ct.top = top Or ct.left = left Then
            ct.BackColor = &HC0C0FF
        Else
            ct.BackColor = &H8000000F
        End If
    Next
End Sub
Private Sub Label1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label1")
End Sub
Private Sub Label2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label2")
End Sub
Private Sub Label3_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label3")
End Sub
Private Sub Label4_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label4")
End Sub
Private Sub Label5_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label5")
End Sub
Private Sub Label6_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label6")
End Sub
Private Sub Label7_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label7")
End Sub
Private Sub Label8_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label8")
End Sub
Private Sub Label9_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label9")
End Sub
Private Sub Label10_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label10")
End Sub
Private Sub Label11_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label11")
End Sub
Private Sub Label12_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label12")
End Sub
Private Sub Label13_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label13")
End Sub
Private Sub Label14_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label14")
End Sub
Private Sub Label15_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label15")
End Sub
Private Sub Label16_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label16")
End Sub
Private Sub Label17_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label17")
End Sub
Private Sub Label18_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label18")
End Sub
Private Sub Label19_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label19")
End Sub
Private Sub Label20_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label20")
End Sub
Private Sub Label21_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label21")
End Sub
Private Sub Label22_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label22")
End Sub
Private Sub Label23_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label23")
End Sub
Private Sub Label24_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label24")
End Sub
Private Sub Label25_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label25")
End Sub
Private Sub Label26_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label26")
End Sub
Private Sub Label27_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label27")
End Sub
Private Sub Label28_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label28")
End Sub
Private Sub Label29_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label29")
End Sub
Private Sub Label30_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call SetColor("label30")
End Sub

回复

使用道具 举报

发表于 2013-1-18 22:25 | 显示全部楼层
标识提醒设置(窗体)3.rar (19.76 KB, 下载次数: 13)

点评

学习了,类,应用程序级事件代码,数组,太妙了。  发表于 2013-1-18 22:53

评分

参与人数 1 +10 收起 理由
hwc2ycy + 10 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-1-18 22:49 | 显示全部楼层
c888 发表于 2013-1-18 22:15
用这样可以,只是代码多,能否简化一下。谢谢!

Sub SetColor(ByVal controlname As String)

你还真有耐心用第一种方法,我是怕了这样写。
所以才下窗体的MOUSEDOWN事件来实现。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-18 13:29 , Processed in 0.177895 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表