VBA程序:对加粗的单元格中的值求和

2024-01-02 17:47:24 浏览数 (2)

标签:VBA

下面的VBA自定义函数演示了如何对应用了粗体格式的单元格求和。

在VBE中,插入一个标准模块,在其中输入下面的代码:

代码语言:javascript复制
Public Function SumBold( _
       ParamArray vInput() As Variant) As Variant
 Dim rParam As Variant
 Dim rCell As Range
 Dim vTemp As Variant
 
 Application.Volatile
 On Error GoTo ErrHandler
 For Each rParam In vInput
   If TypeName(rParam) = "Range" Then
     With rParam
       For Each rCell In Intersect( _
         .Cells, .Cells.Parent.UsedRange)
         With rCell
           If .Font.Bold Then
             If IsError(.Value) Then
               vTemp = .Value
               Exit For
             ElseIf VarType(.Value2) = vbDouble Then
               vTemp = vTemp   .Value2
             End If
           End If
         End With
       Next rCell
     End With
   End If
 Next rParam
 SumBold = vTemp
Continue:
 On Error GoTo 0
 Exit Function
ErrHandler: '检查是否溢出
 If Err.Number = 6 Then SumBold = CVErr(xlErrNum)
 Resume Continue
End Function

注意,当求和的单元格区域中单元格格式发生更改时,不会触发任何事件;而使用Application.Volatile语句,每当在工作表上的内容更改时,单元格都会重新计算。这意味着,仅对求和单元格区域中的单元格设置加粗格式,使用该自定义函数求和的值不会改变,除非按F9键强制计算,或者在工作表中输入内容导致工作表重新计算。

这个程序也提供了一个模板,可以稍作修改对其它格式设置的单元格来求和

0 人点赞