VBA代码解决方案第十四讲 如何利用VBA检查单元格中是否含有公式

本文主要是介绍VBA代码解决方案第十四讲 如何利用VBA检查单元格中是否含有公式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程,目前已经是第三版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码摆好。

这套教程共三册,一百四十七讲,内容覆盖较广,也是初级和中级间的过渡教程,改版后的内容主要是提供程序源码文件及代码修正为32位和64位兼用代码。今后一段时间会给大家陆续推出。今日的内容是VBA代码解决方案第十四讲 如何利用VBA检查单元格中是否含有公式5c44d1f518434b26fcd6343e0352a7b5.jpeg

【分享成果,随喜正能量】别不好意思拒绝别人,他都好意思为难你,你又在拿捏什么。如果有人跟你说这不是钱的事,那就是钱不够的事,别高估关系,别试探人心。。

第十四讲 如何利用VBA检查单元格中是否含有公式

在第13讲中,我们学习了使用Range对象的Formula属性可以在单元格区域中写入公式,而对于range的属性来说,各种属性都有着不同的意义。今日我们要讲的属性是HasFormula属性,这个属性的意义是检查单元格是否含有公式。下面给大家来慢慢讲解:

1 使用HasFormula属性检查单元格是否含有公式的代码

使用单元格的HasFormula属性检查单元格是否含有公式,如下面的代码所示。

Sub mynz_14() '第14讲 如何利用VBA检查单元格中是否含有公式

Select Case Selection.HasFormula

Case True

MsgBox "是公式单元格!"

Case False

MsgBox "不是公式单元格!"

Case Else

MsgBox "公式区域:" & Selection.SpecialCells(xlCellTypeFormulas, 23).Address(0, 0)

End Select

End Sub

代码截图:

e4e6d2b24a13258a78a2273b06834209.jpeg

代码解析:上面过程实现检查所选择的单元格区域是否含有公式的目的。

1) 第2行代码返回所选择单元格区域的HasFormula属性值。如果区域中所有单元格均包含公式,则该值为True;如果所有单元格均不包含公式,则该值为False。

2) 第3、4行代码,如果返回True,说明区域中所有单元格均包含公式。

3) 第5、6行代码,如果返回False,说明区域中所有单元格均不包含公式。

4) 第7、8行代码,如果是混合区域,则显示包含公式的单元格地址.

运行效果一:

a25981082a58fe61c1b64e4eb8cb4e28.jpeg

运行效果二:

56bd96bf2f98de60ec4a845af57e46b8.jpeg

2 公式错误信息的处理

当需要获取的单元格的值由公式返回时,公式返回的结果可能是一个错误文本,包含#NULL!、#DIV/0!、#VALUE!、#REF!、#NAME?、#NUM!、#N/A等。此时,当单元格公式返回结果为错误文本时,如果试图通过Value属性来获得公式的返回结果,将得到类型不匹配的错误信息,

通过Range对象的Value属性的返回结果是否为错误类型,可以判断公式是否存在错误。

如下面的代码所示。

Sub mynz_14_2() '第14讲 如何利用VBA检查单元格中是否含有公式

If VBA.IsError(Range("A5").Value) = True Then

MsgBox "A5单元格错误类型为:" & Range("A5").Text

Else

MsgBox "A5单元格公式结果为" & Range("A5").Value

End If

End Sub

代码解析:上述过程代码判断单元格A5中公式结果是否为错误,如果为错误则显示该错误类型,否则显示公式的结果.

1) 第2行代码使用IsError函数返回Boolean值,指出表达式是否为一个错误值,如果表达式表示一个错误,则IsError函数返回True,否则返回False。

aacab2bcae1e939716494c9bbc907c93.jpeg

今日内容回向:

1 HasFormula属性的意义是什么?

2 如何判断公式是否有错误?

本讲内容参考程序文件:VBA代码解决方案(1-19).xlsm

bbf66e7363aef7cfde342fbbfdd10946.jpeg

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

da7c3e9d9ba70d60efef3f8decf0101c.jpeg


这篇关于VBA代码解决方案第十四讲 如何利用VBA检查单元格中是否含有公式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019180

相关文章

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.