excel - 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- 放弃公式已经疯了,因为它不能“看到”折叠的单元格了。它确实看到了它们,当我折叠组并“修复”单击它的公式时,它会正确求和,即使当时隐藏了单元格。
有什么帮助吗?提前致谢
解决方案
单击命令按钮时,将(至少)您的函数中提到的单元格之一设置为脏。这将触发重新计算。
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
推荐阅读
- python - 在networkx中找到最长的圆路
- java - 使用 ProcessBuilder 结果填充 JavaFX listView
- scala - 处理数据倾斜而不加盐火花中的连接键
- tensorflow - GlobalAvgPool1D 与输出大小不兼容
- swift - 如何使 Rectangle() 和 DatePicker 重叠?
- node.js - 打字稿:'数字| undefined' 不可分配给“number”类型的参数
- java - java URLConnection - 如何从包含大写字母的 URL 中读取数据?
- reactjs - 使用 react-i18next 补水 SSR React App 导致闪烁
- android - 在终端的后台运行 android builds/gradle?
- linux - Linux复制具有特定文件名长度的所有文件