首页 > 解决方案 > Excel 的 VBA UDF 变得有价值!在另一个 UDF 上使用 hidden = true 之后

问题描述

我已经为一个项目构建了一个包含多个公式的 Excel 工作表。然后,我添加了一个用于折叠/展开某些单元组的命令按钮。

命令按钮代码是:

Private Sub CommandButton1_Click()

Columns("B").ColumnWidth = 30
With Me.CommandButton1
    If .Caption = "Customer Relationship" & vbCrLf & "Management Processes" Then
        .Caption = "Customer Relationship" & vbCrLf & "Management Processes "
        Rows("11:74").Hidden = False
    Else
        .Caption = "Customer Relationship" & vbCrLf & "Management Processes"
        Rows("11:74").Hidden = True
    End If
    'Worksheets(1).Calculate
End With
End Sub

它工作正常。现在,在工作表上,我有一个使用另一个 UDF 根据背景颜色对单元格求和的单元格,该单元格的代码是:

Function ColorFunction(rColor As Range, rRange As Range, 
Optional SUM As Boolean)
    Dim rCell As Range
    Dim lCol As Long
    Dim vResult
    lCol = rColor.Interior.ColorIndex

If SUM = True Then
    For Each rCell In rRange
      If rCell.Interior.ColorIndex = lCol Then
        vResult = WorksheetFunction.SUM(rCell, vResult)
      End If
    Next rCell
Else
    For Each rCell In rRange
      If rCell.Interior.ColorIndex = lCol Then
        vResult = 1 + vResult
      End If
    Next rCell
End If
ColorFunction = vResult
End Function

它也像一个魅力。问题来了:当我按下 CommandButton 时,单元格会正确折叠/展开,但具有 sum-by-color 函数的单元格会变为 VALUE!,然后如果我单击公式内的公式栏并返回工作表,它会自动修复自己而无需我更改任何内容。

我试图: a- 在按钮上添加重新计算,没有骰子。b-放弃该功能,我尝试使用其他代码,它做了同样奇怪的事情。c- 放弃公式已经疯了,因为它不能“看到”折叠的单元格了。它确实看到了它们,当我折叠组并“修复”单击它的公式时,它会正确求和,即使当时隐藏了单元格。

有什么帮助吗?提前致谢

标签: excelvbauser-defined-functions

解决方案


单击命令按钮时,将(至少)您的函数中提到的单元格之一设置为脏。这将触发重新计算。

Private Sub CommandButton1_Click()

Columns("B").ColumnWidth = 30
With Me.CommandButton1
    If .Caption = "Customer Relationship" & vbCrLf & "Management Processes" Then
        .Caption = "Customer Relationship" & vbCrLf & "Management Processes "
        Rows("11:74").Hidden = False
    Else
        .Caption = "Customer Relationship" & vbCrLf & "Management Processes"
        Rows("11:74").Hidden = True
    End If
    'Worksheets(1).Calculate
End With
Cells(1, 6).Dirty 'For Cell F1
End Sub 

推荐阅读