Excel的VBA自定义项值!在另一个UDF上使用hidden=true后
我已经为一个项目建立了一个包含几个公式的Excel工作表。然后,我添加了一个用于折叠/展开某些单元格组的CommandButton 命令按钮代码为:Excel的VBA自定义项值!在另一个UDF上使用hidden=true后,excel,vba,user-defined-functions,Excel,Vba,User Defined Functions,我已经为一个项目建立了一个包含几个公式的Excel工作表。然后,我添加了一个用于折叠/展开某些单元格组的CommandButton 命令按钮代码为: Private Sub CommandButton1_Click() Columns("B").ColumnWidth = 30 With Me.CommandButton1 If .Caption = "Customer Relationship" & vbCrLf & "Management Processes" Th
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时,单元格会正确折叠/展开,但具有“按颜色求和”功能的单元格会变为“值”!,然后,如果我点击公式内的公式栏并返回工作表,它会自动修复自身,而无需我更改任何内容
我试图:
a-在按钮上添加重新计算,无骰子。
放弃这个函数,我用其他代码尝试过,它做了同样奇怪的事情。
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
我认为您需要研究一下
应用程序。Volatile
。我按照您的建议进行了研究。现在,行为是一样的,只是当我单击使用该函数的一个单元格时,所有其他使用该函数的单元格也会自行修复。也许可以将SUM
更改为另一个名称,以避免与内置函数冲突。返回什么数据类型?仅供参考,UDF中出现的错误是“无法获取范围类的内部属性”,并且在尝试读取rColor
的ColorIndex时发生。但我不知道为什么会有人这么说。