热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

是否有像VBA函数HasFormula一样的IsNumeric范围版本?

如何解决《是否有像VBA函数HasFormula一样的IsNumeric范围版本?》经验,为你挑选了1个好方法。

我知道range().HasFormula只有当范围中的每个单元格都有公式时才返回True,否则它可以返回False或Null(混合时).但是没有像HasNumber这样的功能.因此,要检查范围是否仅包含数字,我必须这样做

Dim all_numeric As Boolean
all_numeric = True
For Each cell In Range()
    If (Not IsNumeric(cell)) Or IsEmpty(cell) Then 'I also want to get rid of empty cell
        all_numeric = False
        Exit For
    End If
Next cell

此外,有WorksheetFunction.IsNumber类似的东西,但仍然需要循环范围.如果范围包含大量数字,我不确定这是否会非常慢.我想知道是否有更好的方法来检查VBA中范围对象的数值.



1> Mathieu Guin..:

也许all_numeric = (r.Cells.Count - Application.Count(r)) = 0(其中r一个Range对象)?- YowE3K 35分钟前

这确实很漂亮:它利用Excel自己的函数返回一个范围内的数值来确定结果:

WorksheetFunction.Count

计算包含数字的单元格数量并计算参数列表中的数字.

https://msdn.microsoft.com/en-us/library/office/ff840324.aspx

不计算错误单元格和空单元格,这满足了不计算空单元格的要求.

这使得一个很好的UDF在标准模块中公开,我发现:

'@Description("Returns True if all cells in specified range have a numeric value.")
Public Function IsAllNumeric(ByVal target As Range) As Boolean
    IsAllNumeric = target.Cells.Count - Application.WorksheetFunction.Count(target) = 0
End Function

请注意,我使用过Application.WorksheetFunction.Count,而不是Application.Count:

后者是一种后期绑定调用,它使VBA运行时工作比查找Count方法更加困难.你正在开发一个扩展的COM接口,所以你也没有编译时验证:Application.IDontExist编译完全正常,并且运行时错误438爆炸.与任何其他后期成员调用一样,VBE的IntelliSense可以帮助你的参数:

没有intellisense

前者是一个早期绑定的函数调用,VBA在编译时解析.您正在WorksheetFunction直接使用该界面,因此VBE为您提供参数的自动完成IntelliSense.

自动完成:

自动完成

智能感知:

智能感知

调用是早期绑定的事实意味着没有运行时开销,因此性能更好 - 即使它最终是完全相同的内部Excel函数执行.

缺点(如果它是一个)是后期绑定的Application.SomeFunction东西与Excel4Macros兼容,Excel4Macros是旧的传统的VBA前自动化Excel方式.因此,而不是提高运行时错误像他们早期绑定同行,后期绑定函数返回错误,这样你可以 应该与测试它们IsError之前,你可以假设你实际上得到什么类型.

使用早期绑定WorksheetFunction.SomeFunction调用,如果Excel显示的结果是#REF!#VALUE!,或者#N/A或者其他任何可能的错误值,那么您将永远不会遇到类型不匹配运行时错误,将错误值视为a String或a Long,或者任何其他非错误VBA类型.相反,您只需处理运行时错误,就像处理任何其他VBA API函数一样.

后期绑定调用将错误值传播到您的代码中; 早期调用早期失败:在读取单元格值之间可能有20行代码,并且假定没有错误值的方式使用该值,并且该指令会引发类型不匹配 - 然后您需要调试以追溯到返回错误的函数.使用早期绑定的代码,函数本身会抛出错误,因此您无需进行挖掘.


推荐阅读
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
author-avatar
大街上
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有