• 技巧013 VBA操作单元格中的公式 - 图1

    本技巧的目的:

    • 如何使用VBA 在单元格区域写入公式
    • 如何使用VBA 检查单元格区域是否有公式
    • 如何使用VBA 判断单元格的公式是否存在错误
    • 如何使用VBA 使用工作表函数计算
    • 下图是测试单元格是否有公式 :
    • 技巧013 VBA操作单元格中的公式 - 图2
    • 如果有混合的区域,可以检测出含有公式的区域:
    • 技巧013 VBA操作单元格中的公式 - 图3

      代码助手

    • 代码助手下载地址 http://excel880.com/blog/archives/11297

    • 在代码窗口输入中文: 公式+空格,可以快速输入代码
    • 技巧013 VBA操作单元格中的公式 - 图4
    • 在代码库中可以随时收录需要的代码
    • 技巧013 VBA操作单元格中的公式 - 图5

      1. 在单元格中写入公式

    • 技巧013 VBA操作单元格中的公式 - 图6

    • 运行代码前:
    • 技巧013 VBA操作单元格中的公式 - 图7
    • 运行代码后:
    • 技巧013 VBA操作单元格中的公式 - 图8
    • 技巧013 VBA操作单元格中的公式 - 图9
    • 注释:
    • 写入的公式可以是绝对引用,也可以是非绝对引用。
    • 绝对引用:
    • s = r.Address ‘地址后面不带参数
    • Range(“c2”).Formula = “=sum($A$1:” & s & “)”
    • 技巧013 VBA操作单元格中的公式 - 图10
    • ★★★注意:公式中的双引号,= 等字符 不能遗漏。 = “=sum($A$1:” & s & “)”
    • 还可以使用FormulaR1C1属性返回或设置以R1C1-样式符号表示的公式,如下面的代码所示。
    • Sub rngFormulaRC()
    • Sheet2.Range(“C1:C10”).FormulaR1C1 = “=SUM(RC[-2]+RC[-1])”
    • End Sub
    • 如果需要在单元格中写入数组公式则使用Range对象的FormulaArray属性。如下面的代码所示。
    • Sub RngFormulaArray()
    • Sheet3.Range(“C1”).FormulaArray = “=A1:A2*B1:B2”
    • End Sub
    • Range对象的FormulaArray属性返回或设置单元格区域的数组公式。

      2. 检查单元格是否含有公式

    • 代码如下:

    • 技巧013 VBA操作单元格中的公式 - 图11
    • 技巧013 VBA操作单元格中的公式 - 图12
    • 技巧013 VBA操作单元格中的公式 - 图13
    • 注释:
    • HasFormula 属性:
    • 区域中 所有单元格 均包含公式, 值为 True
    • 区域中 所有单元格 均不包含公式,值为 False
    • 其他情况下:单元格中既有包含公式 也有不包含公式的,值为: Null
    • 其他情况代码:
    • MsgBox “公式区域:” & Selection.SpecialCells(xlCellTypeFormulas).Address(0, 0)
    • ‘提示对话框: 包含公式的单元格的非绝对引用地址
    • 使用 SpecialCells 方法,返回一个与指定类型及值相匹配的所有单元格
    • 返回是 Range 对象, 加上 address(0,0),显示 非绝对引用的地址

      3. 判断单元格公式是否存在错误

    • 代码:

    • 技巧013 VBA操作单元格中的公式 - 图14
    • 运行结果:
    • 技巧013 VBA操作单元格中的公式 - 图15
    • 检查没有错误公式的单元格:
    • 只需要更换地址:Set rng = Sheet1.Range(“D7”)
    • 运行结果:
    • 技巧013 VBA操作单元格中的公式 - 图16
    • 注释:
    • 通过 IsError 来检查是否包含单元格错误值,返回不同的结果

      4. 使用工作表函数计算

    • 代码:

    • 技巧013 VBA操作单元格中的公式 - 图17
    • 注释:
    • Application.WorksheetFunction.Sum 调用工作表函数进行运算
    • Sheet1.Range(“D2:” & 列 & “9”) 字符连接的方式:用“”和 & 进行连接

      VBA代码助手 懒人神器 在 EXCEL880.COM 官网下载

      更多作品请百度搜索 郑广学