如何测试Excel文件中的任何非标题单元格是粗体还是斜体

时间:2010-07-06 16:41:07

标签: c# unit-testing excel named-ranges

我们使用包含一些业务逻辑的Excel工作表(因此通常由非IT编辑)。一些C ++代码是在VBA中从同一张表生成的 - 傻,我知道。我计划针对这个工作表编写一系列单元测试,确保严格的格式以造福所有人。例如,事情应按字母顺序排序。我以前没有做过这种工作;甚至不确定使用哪个库。为了让我的脚湿透,我想找到所有具有除“自动颜色,普通样式,Arial,尺寸10”以外的字体的单元格 - 例如红色或粗体或大小11,或ComicSans字体。然后我想检查这些单元格是否是“非标题”单元格。 “标题”单元格是已知命名范围的一部分。例如,如果这样的单元确实属于命名范围“XYZheaders”,那么它就是Ok。如果没有,那么我希望报告一个单元格的坐标(理想情况下,对于每个有问题的单元格都是人类可读的“D25”,并指出问题是否与颜色,字体类型,样式或大小有关)

编辑: 我只是在这个问题上放了赏金,因为我正在寻找一个完整的C#样本。如果您认为我的问题含糊不清,请提出问题。

2 个答案:

答案 0 :(得分:3)

这应该成功,享受。请记住,放入新的Range Names不会触发包含此函数的单元格的重新计算(因此在创建范围名称后点击 F9 )。

Option Explicit

Public Function IsDataCellBoldOrItalic() As Boolean
    Dim rngName As Name
    Dim intersectRange As Name

    For Each rngName In ActiveWorkbook.Names
        If Not Intersect(rngName.RefersToRange, Application.ThisCell) Is Nothing Then
            IsDataCellBoldOrItalic = False
            Exit Function
        End If
    Next

    ''# Now we know we are not in a "header" cell
    IsDataCellBoldOrItalic = Application.ThisCell.Font.Bold Or Application.ThisCell.Font.Italic

End Function

答案 1 :(得分:3)