Excel 包含特定百分比值的VBA单元格格式

Excel 包含特定百分比值的VBA单元格格式,excel,vba,Excel,Vba,我有一个VBA代码,它在单元格中循环查找百分比值,并在单击复选框时相应地高亮显示它们。 我有两个复选框-大于100,小于0 Private Sub greater大于100_Click() 变暗lr为长 lr=范围(“A”和Rows.Count).End(xlUp).Row 调光范围 变暗rng As范围 设置rng=范围(“G3:G30”和lr) 模糊的发现一样长 查找=1 Application.ScreenUpdating=False 如果大于100.Value=True,则 对于rng中

我有一个VBA代码,它在单元格中循环查找百分比值,并在单击复选框时相应地高亮显示它们。
我有两个复选框-
大于100
小于0

Private Sub greater大于100_Click()
变暗lr为长
lr=范围(“A”和Rows.Count).End(xlUp).Row
调光范围
变暗rng As范围
设置rng=范围(“G3:G30”和lr)
模糊的发现一样长
查找=1
Application.ScreenUpdating=False
如果大于100.Value=True,则
对于rng中的每个c
如果c>=查找,则
c、 挑选
有选择。边界
.颜色=蓝色
.LineStyle=xlContinuous
.重量=xl厚
以
如果结束
下一个c
Application.ScreenUpdating=True
其他的
对于rng中的每个c
如果c>=查找,则
c、 挑选
有选择。边界
.颜色=黑色
.LineStyle=xlNone
.Weight=xlThin
以
如果结束
下一个c
Application.ScreenUpdating=True
如果结束
端接头
私有子类0_单击()
变暗lr为长
lr=范围(“A”和Rows.Count).End(xlUp).Row
调光范围
变暗rng As范围
设置rng=范围(“G3:G30”和lr)
模糊的发现一样长
查找=0
Application.ScreenUpdating=False
如果LessThan0.Value=True,则
对于rng中的每个c

如果c首先,请在计算后检查rng变量中的最终值。通常,如果您正在考虑单元A3到G30,那么您的范围应该是“A3:G30”。语句lr=range(“A”和Rows.Count).End(xlUp).RowSet rng=range(“G3:G30”和lr)给人的印象是单元格范围没有正确形成。然而,我的怀疑可能只是一个虚惊一场,因为无论你描述了什么,你的要求都不完全清楚

其次,对于简洁的代码,请将代码的以下部分更改为如下所示

Application.ScreenUpdating = False
If LessThan0.Value = True Then
    For Each c In rng
        If c <= find Then
          c.Select
          With Selection.Borders
           .Color = vbBlue
           .LineStyle = xlContinuous
           .Weight = xlThick
          End With
        End If
    Next c
    Application.ScreenUpdating = True
    Else
    For Each c In rng
        If c <= find Then
          c.Select
          With Selection.Borders
           .Color = vbBlack
           .LineStyle = xlNone
           .Weight = xlThin
          End With
        End If
    Next c
Application.ScreenUpdating = True
End If
Application.ScreenUpdate=False
如果LessThan0.Value=True,则
对于rng中的每个c

如@GSerg所评论的,如果您使用表单控制复选框,那么可能会链接到两个单元格,比如F1和F2,为条件格式添加的公式如下:
=和($F$1=FALSE,G3>100)
=和($F$1,G3>100)
=和($F$2=FALSE,G3非常有效!非常感谢您的帮助。
Application.ScreenUpdating = False
For Each c In rng
   If c <= find
     c.Select
     With Selection.Borders
       .Color = IIf(LessThan0.Value = True, vbBlue, vbBlack) 
       .LineStyle = IIf(LessThan0.Value = True, xlContinuous, xlNone) 
       .Weight = IIf(LessThan0.Value = True, xlThick, xlThin)  
     End With
   End If
Next c
Application.ScreenUpdating = True