【问题标题】:Show icon only in conditional formatting, without the value of the cell仅以条件格式显示图标,不显示单元格的值
【发布时间】:2019-09-17 02:49:26
【问题描述】:

几年前,我从 Paul Bica 的帖子中借用了下面的代码。 (Using Conditional Formatting with Icon Sets with six conditions)

Option Explicit

Public Sub testIcons()
   Application.ScreenUpdating = True
   setIcon Sheet1.UsedRange
   Application.ScreenUpdating = True
End Sub

Public Sub setIcon(ByRef rng As Range)
   Dim cel As Range, sh As Shape, adr As String

   For Each sh In rng.Parent.Shapes

      If InStrB(sh.Name, "$") > 0 Then sh.Delete
   Next: DoEvents
   For Each cel In rng
      If Not IsError(cel.Value2) Then
         If Val(cel.Value2) > 0 And Not IsDate(cel) Then
           adr = cel.Address
           Set sh = Sheet1.Shapes.AddShape(msoShapeOval, cel.Left + 5, cel.Top + 2, 10, 10)
           sh.ShapeStyle = msoShapeStylePreset38: sh.Name = adr
           sh.Fill.ForeColor.RGB = getCelColor(Val(cel.Value2))
           sh.Fill.Solid
         End If
      End If
   Next
End Sub

Public Function getCelColor(ByRef celVal As Long) As Long
   Select Case True
      Case celVal = 1:    getCelColor = RGB(211, 211, 211):    Exit Function
      Case celVal = 2:    getCelColor = RGB(0, 0, 0):    Exit Function
      Case celVal = 3:    getCelColor = RGB(255, 0, 0):    Exit Function
      Case celVal = 4:    getCelColor = RGB(255, 153, 204):  Exit Function
      Case celVal = 5:    getCelColor = RGB(255, 255, 51):  Exit Function
      Case celVal = 6:    getCelColor = RGB(0, 204, 0):  Exit Function
   End Select
End Function

我想让它只显示图标而不显示单元格的值。

【问题讨论】:

  • 你能把字体颜色设置为白色吗?
  • 在您拥有Not IsError(cel.Value2) 的代码上,它正在寻找单元格中的值。如果您对没有值的图标感兴趣(这是我的理解),只需放置 IsError(cel.Value2),删除 Not
  • 感谢您的回复。 @David Garcia Bodega ..您的假设是正确的。我尝试了您的建议,但不幸的是它删除了图标并留下了值。

标签: excel vba


【解决方案1】:

如果您对正在更改的单元格的数字格式感到满意,我认为在此行之后:

sh.Fill.Solid

你可以说:

cel.NumberFormat = ";;;"

这应该有效地使单元格的内容透明1(匹配单元格的背景颜色)。

似乎对我有用:


1 似乎不适用于包含错误的单元格(例如#N/A),但我认为这不是问题,因为您的代码忽略了包含错误的单元格。

【讨论】:

  • 太棒了。!!!谢谢寒林。我认为这对我来说会很好。现在.. 下一个问题是如何在我输入数字时让它自动工作,而不必每次都手动运行代码..??
  • @AndySearle,一种方法可能是将代码放在工作表模块的Worksheet_Change 事件过程中。在您的情况下,您可以将testIcons 添加到事件代码中,这意味着每当您更改该工作表的单元格时,您的testIcons 程序就会运行。我不确定这是否是您想要的,但这只是一个示例。
猜你喜欢
  • 1970-01-01
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
相关资源
最近更新 更多