用于检查条件格式的预构建代码不起作用-类型错误

时间:2018-11-13 16:57:58

标签: excel vba compatibility

我正在尝试使用Bob Phillips创建的VBA函数来检查特定单元格中是否满足条件格式。这似乎是一个受人尊敬的解决方案,因为Google提出了许多不同的引用,但它为我抛出了Type错误。我正在使用Excel 2007,并且对代码的最后一次更新是在2005年,所以我认为其中涉及一些兼容性问题。我已经修复了一个语法错误(Set rng = rng(1, 1)直到插入.Cells才起作用),但由于无法解析代码的作用,因此无法修复该错误。

该函数经过专门设计,可根据公式(即我的姓名)来评估条件。这是完整的代码:

Public Function IsCFMet2(rng As Range) As Boolean

Dim oFC As FormatCondition
Dim sF1 As String
Dim iRow As Long
Dim iColumn As Long

   Set rng = rng.Cells(1, 1)
   If rng.FormatConditions.Count > 0 Then
      For Each oFC In rng.FormatConditions
         If oFC.Type = xlExpression Then
             're-adjust the formula back to the formula that applies
             'to the cell as relative formulae adjust to the activecell
            With Application
               iRow = rng.Row
               iColumn = rng.Column
               sF1 = .Substitute(oFC.Formula1, "ROW()", iRow)
               sF1 = .Substitute(sF1, "COLUMN()", iColumn)
               sF1 = .ConvertFormula(sF1, xlA1, xlR1C1)
               sF1 = .ConvertFormula(sF1, xlR1C1, xlA1, , rng)
            End With
       **** IsCFMet2 = rng.Parent.Evaluate(sF1)
         End If
         If IsCFMet2 Then Exit Function
     Next oFC
   End If

End Function

加星号的行将引发类型错误。我不完全了解With Application块,也不知道它对检测满足的条件格式规则的作用,因此我不知道问题是什么或如何在不破坏代码的情况下解决问题。

这是我用来检查功能的测试宏:

Sub Test():

Dim Tester As Range

Set Tester = ActiveCell

    If IsCFMet2(Tester) Then MsgBox "CF is met!"

End Sub

但是我在各种范围输入中都遇到了相同的错误,因此我非常有信心输入本身不是问题-我将其包括在内只是为了预防。

0 个答案:

没有答案