有没有办法创建一个可以接受数组和范围作为输入的 VBA 函数?

2024-01-05

我正在尝试创建一个函数,它可以接受范围或数组来执行一些进一步的计算。当数组通过时,该函数工作正常,但是当该函数在工作表中的范围内使用时,它会给我值!错误。

我的代码如下所示:

Function COMRET(data as variant, N as integer)

     Dim nrows as long

     If IsArray(data) Then
        N = UBound(data,1)
     Else
        N = data.rows.count
     End If

     '... some other calculations here

End Function

问题似乎来自上面数组的标识...当我注释掉上面的 IF 部分时,代码的其他部分似乎没问题。不知道我在这里做错了什么。感谢您的帮助。谢谢!


您的声明是正确的data as Variant.
当你将一个范围传递给它时,它将作为 Variant/Object/Range 正确传递,但事情会变得有点复杂。

你打电话时IsArray,这只是一个函数,它会尝试使用默认属性 https://stackoverflow.com/a/18051644/11683已过的Range对象,即Value. IsArray(Range.Value)如果范围由多个单元格组成,则为 True。但是当你打电话时UBound,这是一个非常特殊的函数,因为它被突出显示为关键字,它不会尝试获取data.Value并将运行于data直接,并且data是单身Range对象,所以它不能有上限(而它的.Value can).

您需要正确检测您正在传递的内容:

Public Function COMRET(data As Variant, N As Integer)
    Dim nrows As Long

    If TypeOf data Is Range Then
        N = data.Rows.Count
    ElseIf IsArray(data) Then
        N = UBound(data, 1)
    Else
        ' ???
    End If

End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法创建一个可以接受数组和范围作为输入的 VBA 函数? 的相关文章

  • 在 Javascript 中连接空数组

    我正在浏览一些代码 我想知道这有什么用处 grid push concat row 根据我的理解 它等同于 grid push row 为什么要大惊小怪 连接 你想使用 concat当您需要展平数组并且没有由其他数组组成的数组时 例如 va
  • 删除地图函数中的重复项[重复]

    这个问题在这里已经有答案了 我正在尝试删除数组中的重复项 我有来自帖子的标签 这也是数组 tags react javascript node 从地图函数我得到这样的输出 node react javascript react javasc
  • PHP 数组 - 如何将数组转换为对象? [复制]

    这个问题在这里已经有答案了 我对 PHP 还很陌生 所以请耐心等待 所以我收到这个错误 注意 尝试在此行获取非对象的属性 echo tr td row gt last name td td row gt first name td td r
  • 数据透视表错误 |无效的调用或过程

    我需要一些帮助来解决这个问题 我正在尝试创建一个数据透视表 从第一季度开始 在同一张表中包含一系列数据 第一个 if 语句在那里是因为最后一列并不总是包含标题 所以我将其包含在那里 我希望范围是动态的 因为所制作的表格的大小将根据工作表中数
  • 在工作表中合并行和求和值

    我有一个 Excel 工作表 其中包含以下数据 管道 来分隔列 A B C X 50 60 D E F X 40 30 A B C X 10 20 A B C Y 20 20 A B C X 20 70 D E F X 10 50 A B
  • R:如何应用输出多列数据帧的函数(使用 dplyr)?

    我想查找数据框中某一特定列与所有其他列之间的相关性 p 值和 95 CI broom 包提供了一个示例 说明如何使用带有 dplyr 和管道的 cor test 在两列之间执行此操作 对于 mtcars 和 mpg 列 我们可以与另一列进行
  • 如何在 javascript 中实现映射或排序集

    Javascript 有使用数字索引的数组 john Bob Joe 以及可以像关联数组或 映射 一样使用的对象 允许对象值使用字符串键 john 28 bob 34 joe 4 在 PHP 中 两者都很容易A 按值排序 同时保留密钥 和B
  • C++ 通过引用传递动态分配的二维数组

    这个问题是基于之前提出的问题而提出的 通过已知大小的引用多维数组传递 https stackoverflow com questions 529109 c pass by reference multidimensional array w
  • Excel - 公式或宏根据链接到另一个单元格的另一个单元格填充单元格

    在 Excel 中 我试图根据其他两个单元格中包含的值创建一个单元格 我需要单元格 X 和 Y 来获取基于单元格 L 和 的数据 就像这样 X Y L 1 2 3 4 5 6 A 6 1 1 6 1 6 1 7 1 7 2 7 2 8 1
  • 点击事件的事件处理程序自动触发 - jQuery [重复]

    这个问题在这里已经有答案了 可能的重复 为什么单击事件处理程序会在页面加载后立即触发 https stackoverflow com questions 7102413 why does click event handler fire i
  • 如何在 PHP 中比较两个数组并列出差异?

    我正在构建一个表单来执行以下操作 打印从 MySQL 获取的用户和权限表 用户拥有的每一项权限都是一个复选框 而他们缺少的每一项权限都是一个未选中的复选框 允许管理员选中和取消选中复选框以授予或删除权限 提交表单后 显示一个确认页面 其中仅
  • 在汇编中初始化字符串数组

    我想创建一个数据数组 在初始化数据部分保存 5 个字符串 每个字符串正好有 4 个字符 每个字符串都有一些初始数据 例如第一个字符串的 abcd 第二个字符串的 efgh 等等 无效的 0任何字符串都不需要字符 如何用汇编语言初始化字符串数
  • Javascript:“new Array(4)”与 Array.apply(null, {length: 4}) 有何不同?

    我想生成一个给定长度的空数组并用一些数字填充它 生成具有四个连续数字元素的数组的一种方法是 var x Array apply null length 4 map function item index return index 但当我看到
  • 动态二维数组非连续内存C++

    假设我将二维数组的地址及其二维数组的行和列传递给函数 该函数会将二维数组的地址视为一维数组 例如 int Matrix 如果我执行下面的代码 int arr arr new int row for int i 0 i lt row i ar
  • QByteArray 到整数

    正如您可能从标题中看出的那样 我在转换QByteArray为一个整数 QByteArray buffer server gt read 8192 QByteArray q size buffer mid 0 2 int size q siz
  • 如何使用 jQuery 通过 Ajax 发送复选框数组的值?

    我有一个包含很多表单字段的表单 12 x n 行 每行中的第一个字段 代表产品 是一个类似于以下内容的复选框
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字
  • matlab中求和函数句柄

    Hi我试图对两个函数句柄求和 但它不起作用 例如 y1 x x x y2 x x x 3 x y3 y1 y2 我收到的错误是 对于 function handle 类型的输入参数 未定义函数或方法 plus 这只是一个小例子 实际上我实际
  • 使用 Excel VBA 循环工作簿文件夹并将所有工作表导出为制表符分隔文本

    我拼凑了一个 Excel VBA 脚本 该脚本将打开的工作簿中的所有工作表写入单独的制表符分隔文件 这仍然是 宏 吗 我正在 Excel 真空中学习这一点 它一次只处理一本工作簿 效果很好 这里是 Sub exportSheetsToTex

随机推荐

  • PHP 和 Wordpress 中的调试

    ini set log errors On and define WP DEBUG true 我正在尝试创建一个错误日志文件 但我对这两个文件感到困惑 会出现什么样的错误log errors and WP DEBUG The define
  • 使用 C# 从 SQL Server 数据生成 XML

    我在 SQL Server 中有一个生成 XML 输出的查询 我想使用 C 产生相同的结果 是否可以 查询是 select T1 1 HomeID as HomeID select T1 2 DayID as ID select T2 Rn
  • com.sun.xml.internal.ws.client 不存在

    我试图捕获 ClientTransportException 但我的程序在编译阶段失败 出现以下异常 ERROR workspace rates java service bundle1 src main java com connecto
  • 有没有办法知道 NSUserNotificationCenter 中有多少个 NSUserNotification?

    Is there any non private way of knowing how many notifications there are in the Notification Center NSUserNotificationCe
  • 为什么 PDO fetchColumn() 在这里不起作用

    我正在尝试计算查询返回的行数 我正在这样做 what Norman stmt conn gt prepare select names as names from names where names what stmt gt bindPar
  • 如何为文本框添加效果到样式

    我试图向样式添加效果以便重用它 但由于某种原因它不起作用
  • Spring REST 返回 PDF - 响应状态 406(不可接受)

    我读了很多关于此类问题的问题 但他们都建议使用正确的杰克逊版本 这是我目前的情况 休息 API RequestMapping value get pdf id headers Accept method RequestMethod GET
  • Swift Combine:将发布者转变为只读 CurrentValueSubject

    有时我的视图模型使用 Published财产或PassthroughSubject 但我不希望它对外界可写 很简单 把它变成公共的AnyPublisher并将可写的保留为私有 如下所示 class ViewModel Published p
  • Google API Oauth .net core 3.1

    我有一个 net core 3 1 MVC Web 应用程序 我正在尝试开始使用一些谷歌 API 我发现谷歌文 档非常混乱 在官方文档中 我发现 MVC 库不支持 net core 有人可以为我指明正确的方向 我应该如何开始在 MVC ne
  • 使用 ArcGIS JS API 的 dojo 解析器和 TypeError

    我收到此错误 类型错误 未定义 不是函数 评估 parser parse 这是我的代码
  • 未启用时更改按钮背景

    我需要改变我的Button仅当未启用背景 例如 SolidColorBrush 时 IsEnabled false 我能怎么做 我要修改按钮吗Style使用 XAML 或者我可以通过编程方式完成这项工作吗 在未启用背景时仅更改背景的正确 X
  • 使用 jQuery 按顺序添加和删除类

    我想说的是 如果我的 div 没有活动类 请添加它 如果该类确实处于活动状态 请将其删除 我有以下内容 只有我的代码添加了该类 然后继续查询并在最后删除它 最好的解决方案是什么 2个单独的单击功能 work showcase click f
  • Woocommerce 根据所选的运输类别在结账时更改运输方式标题

    我想根据产品的运输类别更改商店结帐中显示的运输方式标题 e g 运输方式标题目前为统一费率 我有 2 个产品 如果购买产品 A 我需要它有 易碎品运输 如果购买产品 B 我需要它具有 标准运输 遗憾的是 我必须使用类来进行运输 因此其他方法
  • Angular 2 服务的异步初始化

    我有一个 Angular 2 服务 需要在初始化时执行异步工作 并且在初始化完成之前不应该使用 Injectable export class Api private user private storage constructor pri
  • Numpy 数组广播规则

    我在理解 Numpy 中数组广播的规则时遇到一些困难 显然 如果对两个具有相同维度和形状的数组执行逐元素乘法 一切都很好 另外 如果将多维数组乘以标量 它就会起作用 这我明白了 但是如果你有两个 N 维数组不同的形状 我不清楚广播规则到底是
  • 检测到 jQuery.ajax 调用因页面正在重新加载而失败?

    我进行了大量的 ajax 调用 并以抛出消息的方式处理来自它们的错误 我发现如果在页面重新加载时正在进行 ajax 调用 例如单击刷新 或导航到另一个 URL 然后我正在进行的 ajax 调用会触发它们的错误回调 如何区分真正的错误和因页面
  • 向 qmake 添加一个带有值的定义?

    如何使用 qmake 添加带有值的定义 例如 这在我的 pro 文件中不起作用 如我所料 DEFINES WINVER 0x0500 nor DEFINES WINVER 0x0500 如何在开始编译之前将 WINVER 定义为 0x050
  • 如何隐藏DataGridView的网格线? Winforms C#

    如何隐藏DataGridView的网格线 我在互联网上搜索过但没有找到解决方案 请帮忙 谢谢 你可以试试 MyGrid CellBorderStyle DataGridViewCellBorderStyle None
  • Android Spannable:如何清除颜色?

    我在 RecyclerView CardViews 的 SearchView 上设置了 Spannable 如果在 CardView 上找到用户输入的文本 则该文本将以红色突出显示 当 SearchView 行被清除时 我希望 CardVi
  • 有没有办法创建一个可以接受数组和范围作为输入的 VBA 函数?

    我正在尝试创建一个函数 它可以接受范围或数组来执行一些进一步的计算 当数组通过时 该函数工作正常 但是当该函数在工作表中的范围内使用时 它会给我值 错误 我的代码如下所示 Function COMRET data as variant N