Application.Cells VS Application.ActiveSheet.Cells

2023-11-30

宏记录器生成以下语句:

Cells.Select

现在我明白,如果没有对象限定符,这将返回所有单元格作为Range object.

但是,我想知道这个声明的完全限定版本是什么?

Is it:

  1. Application.Cells.Select
  2. Application.ActiveSheet.Cells
  3. Application.ActiveWorkbook.ActiveSheet.Cells

换句话说,VBE 在运行时实际上执行了其中哪一个完全限定语句Cells.Select?

所有这些有什么区别???由于所有这些最终都访问同一个对象 - 如果我想明确限定所有对象,我会使用哪个语句,这是否只是个人偏好?

太感谢了!


情况很复杂 :)

由于所有这些最终都访问同一个对象

真的。关键词“到底”。区别在于需要多少步才能到达那里...

不合格Cells (or Range, Rows, Columns, Names等)不是魔法,它们是成员调用(Property Get)针对巧妙命名的隐藏的全局范围对象Global:

object browser: members of 'Global'

您可以通过在标准模块中爆炸来验证是否涉及此隐藏对象:

Sub GoesBoom()
    'throws error 1004 "Method 'Range' of object '_Global' failed"
    Debug.Print Range(Sheet2.Cells(1, 1), Sheet3.Cells(1, 1))
End Sub

_Global and Global密切相关 - 无需深入研究 COM,您可以考虑Global班级,以及_Global它的接口(虽然它并不完全像那样 - 查看“COM coClasses”以获取更多信息)。

But Cells是的财产Range class:

object browser: members of 'Range'

I think可以合理地假设Global呼叫几乎全部重定向到Application,这暴露了所有成员Global, 然后还有一些。

现在正如你所指出的,Application还有一个Cells财产——但是Cells属于Worksheet,所以无论我们做什么,我们最终都需要得到一个Worksheet限定符...然后任何工作表都属于Worksheets集合,属于Workbook对象 - 所以我们可以推断出一个不合格的Cells以完全明确的表示法来说,调用相当于...(鼓声):

Application.ActiveWorkbook.ActiveSheet.Cells

但你不需要that明确的,因为ActiveSheet has a Parent那永远是ActiveWorkbook,所以这也是明确的,但又不会太过分:

ActiveSheet.Cells

但这都是在全球背景下进行的。这个答案解释了有关它的一切 - 它的要点是,如果您位于工作表的代码隐藏中,那么一个不合格的Cells会员电话不是Global.Cells, but Me.Cells.


现在,请注意Cells返回一个Range。因此,每当您针对某个对象调用它时Range如果不提供参数,您将进行多余的成员调用:

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

Application.Cells VS Application.ActiveSheet.Cells 的相关文章

  • 我可以使用 VBA 将密码“传递”到 Excel 中的外部数据库连接吗?

    我正在尝试使用 VBA 隐藏我在 Excel 工作表中设置的数据连接的密码 由于 Excel 以纯文本形式存储外部数据源的密码 因此我想让 VBA 调用表的刷新并提供密码 我录制了刷新表格并输入密码的宏 但令我沮丧的是 它似乎省略了密码部分
  • 从嵌入的谷歌地图中提取标记坐标

    对此还很陌生 所以请耐心等待 我需要从嵌入的谷歌地图中提取标记坐标 示例链接是http www picknpay co za store search http www picknpay co za store search我想提取搜索时地
  • CURL 相当于使用 VBA 的 POST JSON 数据

    我知道这与之前提出的一些问题类似 但有些东西仍然对我不起作用 如何执行以下命令 curl X POST data statements json H Content Type application json user username p
  • 获取给定日期的周数

    例子 DD MM YYYY 1 1 2009 should give 1 31 1 2009 should give 5 1 2 2009 should also give 5 Format 1 2 2009 ww 回报6 那么 怎样才能得
  • 如何从另一个 Excel 实例引用工作簿

    我相信我的问题相当简单 我有一个工作簿 我正在使用它从另一个软件 SAP 获取一些数据 当我从软件导出数据时 它会自动打开一个 xlsx 文件 然后我需要做的是从该文件复制一些数据 粘贴到我的原始工作簿上 然后关闭该文件 我的代码中给我带来
  • 如何使用 C# 在 MS Excel 单元格中添加数字验证

    我的目标是限制用户在 MS Excel 单元格中仅输入 1 到 100 范围内的值 我正在以编程方式生成 Excel 文件 但是当我添加上述验证时 抛出异常Exception from HRESULT 0x800A03EC 我写的代码如下
  • 使用 VBA 在 Access 表中记录计数

    我正在尝试获取表的记录数 如果计数大于 17 则创建一个新表 Dim rst As DAO Recordset strSQL Select from SKUS Set rst db OpenRecordset strSQL If rst R
  • 使用 OpenXML 读取列中的 Excel 工作表数据

    有没有一种方法可以使用 OpenXML SDK 和 C 按列而不是按行读取 Excel 工作表 我已经尝试使用 EPPlus 包 但遇到了一些问题 因为我的应用程序还使用 EPPlus 不支持的 xslm 文件 因此 我需要 OpenXML
  • 关闭工作簿时删除范围,xls vba

    我想要范围 Range A2 G z 关闭工作簿时删除 有人可以帮我处理代码吗 谢谢 凯 这就是我尝试过的 Option Explicit Sub Makro1 insert clipboard Workbooks Pfl SchutzSt
  • 如何暂停特定时间? (Excel/VBA)

    我有一个 Excel 工作表 其中包含以下宏 我想每秒循环一次 但如果我能找到执行此操作的函数 那就很危险了 难道不可能吗 Sub Macro1 Macro1 Macro Do Calculate Here I want to wait f
  • Excel VBA 用户窗体 - 当发生变化时执行 Sub

    我有一个包含很多文本框的用户表单 当这些文本框的值发生变化时 我需要通过调用子例程 AutoCalc 根据文本框值重新计算最终结果值 我有大约 25 个框 我不想向每个调用上述子例程的文本框单独添加 Change 事件 当某些值发生变化时调
  • 索引匹配不起作用

    对于下表 如果 A 列和 B 列都匹配 如何检索 C 列A 列 B 列 C 列城市 1 城市 10 本地城市 2 城市 21 远程城市 3 城市 1 远程城市 4 城市 2 本地 我尝试使用索引和匹配 但得到 N A Enter as an
  • 根据其他列中的条件对列中的唯一值求和

    A B 1 Total 1 900 2 Product A 700 3 Product A 700 4 Product B 300
  • 从VBA中的数组批量插入到sql中

    我正在尝试在 Excel 中构建一个按钮 将所选区域上传到 SQL Server 中的表中 第一行将自动视为列标题 这件事该怎么继续下去呢 我想要的是简单和超快的上传 这是我的想法 我将选择选定的区域 然后将其保存为 txt 文件 然后对其
  • 如何VBA等待Windows保存对话框和发送密钥

    我正在创建一个宏文件 用于下载并保存从 SAP 旧版本 7 20 中提取的数据 当出现保存对话框时 未检测到 Windows 对话框 因为我的客户端 SAP 版本是旧版本 7 20 现在我对此的解决方案是发送密钥 但问题是某些数据包含大量数
  • 在Excel中显示毫秒

    我正在尝试在 Excel 宏中显示毫秒 我有一列整数 它们是以毫秒为单位的时间戳 例如 28095200 是上午 7 48 15 200 我想在它旁边创建一个新列 以保持运行平均值并以hh mm ss 000格式 Dim Cel As Ra
  • Excel ISNUMBER 函数与 IF 语句

    我有一个正在使用的 Excel 文件 有一个列包含数字和文本 有时只是其中之一 我正在尝试编写一个函数来扫描单元格的最左侧部分以查看它是否以数字开头 我以为我拥有它 但显然没有 这就是我所拥有的 IF ISNUMBER LEFT E8 1
  • Excel,多个 IF AND 更高效的公式

    我正在制作一个电子表格 如下所示 Index Diff Exc Sym Sec Result Criteria Met 3 42 2 07 0 86 0 92 1 83 1 95 0 38 2 93 0 87 0 23 2 01 0 09
  • 查找最后一列并按最后一列排序

    我需要 Excel 来检测我拥有的最后一列并对该列进行排序 我有一个宏 每次使用它时都会生成一个新列 因此我无法使用常量 Sub sortyness Dim sortdata A1 Cells LastRow LastColumn As R
  • 在单元格更改时循环遍历一系列单元格,以将序列中的下一个数字显示为单元格的新值

    我了解如何循环范围 For Each cell In Range A1 A5 If condition Then End If Next 我知道 OnChange 事件 Private Sub Worksheet Change ByVal

随机推荐

  • 在 JPA 中对各个列使用 DISTINCT 关键字

    我正在从数据库中读取一些非常不规范的值 我无法控制 该调用检索大学院系的公告 如果用户位于多个院系 这是可能的 则将为这些用户多次返回相同的结果 不过 有些部门的公告可能不同 有些部门的公告则相同 有没有办法让我在 JPA 中的各个列上使用
  • 有没有办法使用GCC的__thread完全模拟thread_local?

    C 11 标准包含一个新的补充 thread local 说明符 它使静态变量成为线程局部的 标准 thread local 支持非平凡类型 具有构造函数和析构函数的类型 不幸的是 GCC 仅支持简单类型 thread说明符作为扩展提供 有
  • laravel 雄辩查询按最后一个 id 进行分组

    您好 我正在尝试获取每个设备的数据库中的最后一个寄存器 我喜欢 id id equip 1 3 2 3 3 3 4 2 5 2 我想查询每个装备的最后一个 id 例如 id id equip 3 3 5 2 我试过这个 calibracao
  • 在 Docker 构建过程中如何设置环境变量?

    我试图在构建过程中在 docker 容器中设置环境变量 但没有成功 使用运行命令时设置它们是可行的 但我需要在构建过程中设置它们 Dockerfile FROM ubuntu latest ARG TEST ENV something 我用
  • Scipy fmin_slsqp 错误“无法将 _slsqp.slsqp 的第 8 个参数‘g’转换为 C/Fortran 数组”

    我已经看到这个问题或其他地方提出的变体 例如 使用优化模块时出现 Scipy 错误 将数组转换为 Fortran 失败 http numpy discussion 10968 n7 nabble com minimize Algorithm
  • 确保对象字段具有 Json 架构中另一个字段中存在的值

    我试图表达物体以及它们之间的关系 每个对象都有一个 ID 每个关系引用 2 个对象 ID 我想确保每个关系都引用现有的对象 ID 你能用 Json Schema 做到这一点吗 schema http json schema org draf
  • 告诉 Python 将 .txt 文件保存到 Windows 和 Mac 上的某个目录

    如何告诉 Python 在哪里保存文本文件 例如 我的计算机正在桌面上运行 Python 文件 我希望它将所有文本文件保存在我的文档文件夹中 而不是保存在我的桌面上 我该如何在这样的脚本中做到这一点 name of file raw inp
  • Jquery 网络摄像头插件 - 错误:Flash 电影尚未注册

    我想使用 jquery 网络摄像头插件捕获图像 我可以通过播放器观看视频 但无法捕获图像 我收到 错误 Flash 影片尚未注册 错误 这是什么意思 在尝试调用 webcam capture 函数时 我收到一条错误消息 提示 webcam
  • 将一系列 div 转换为 4x4 网格

    我有一系列的 div 创建于 ngFor我想让它们显示为 4x4 的 div 网格 这里有HTML and CSS game containter background F4A460 grid template columns repeat
  • 以字符串为键、通用类为值的字典

    我有插座和插头 插头是任何通用类型的 现在我想将任何类型的插头存储到字典中 我尝试用我能想到的所有方式来声明字典中插件的可能类型 没有一个起作用 我确实只找到了传递任何值 T 的解决方案 但没有找到任何泛型类型的类 我也担心我的用词在所有情
  • stellar.js - 为垂直滚动网站配置偏移/对齐元素?

    我发现并正在尝试使用一个名为恒星 js 它主要是为了为网站创建视差效果 但是 我并不追求这种效果 我追求它提供的其他效果 Stellar js 最强大的功能是它对齐元素的方式 当它们的位置改变时 所有元素都会回到原来的位置 父级与屏幕边缘的
  • 在 ViewPager 的多个选项卡中使用单个片段

    我正在使用ViewPager左右滑动 我还添加了选项卡 选项卡的数量取决于服务器数据 所以 我无法将选项卡的数量设置为固定 为此 我仅使用 Single Fragment 和 RecyclerView 在 recyclerView 中显示
  • 列出所有数据库的所有过程中引用的所有列

    有没有一种方法可以获取实例中所有数据库的所有存储过程中引用的所有列和表 输出应该是 Database Procedure Table Column 这将获得您想要的列表 但是如果您在动态 SQL 中嵌入了此类列引用 并且可能找不到依赖于延迟
  • glBufferData 如何知道要处理哪个 VBO?

    这是正式声明glBufferData它用于填充 VBO void glBufferData GLenum target GLsizeiptr size const GLvoid data GLenum usage 然而 令人困惑的是 您可以
  • 具有基本访问身份验证的 Jsoup 连接

    Jsoup 有没有办法从具有基本访问身份验证的网站加载文档 With HTTP基本访问认证你需要发送Authorization标头以及值 Basic base64encode username password E g String use
  • 总结 ggplot 用法的纬度、经度和计数数据

    我收到了一些纬度 经度和计数格式的客户数据 创建 ggplot 热图所需的所有数据都存在 但我不知道如何将其放入 ggplot 所需的格式 我试图按 0 01 Lat 和 0 01 Lon 块 典型热图 内的总计数来聚合数据 我本能地想到
  • Gmail Api 返回请求中未经授权的客户端或范围

    我一直在努力完成这项工作 但只完成了一半的工作 实际上我只能从 Gmail API 读取消息 如果我尝试使用 gmail modify 范围 我会收到错误 HttpAccessTokenRefreshError unauthorized c
  • 使用 PHP 创建缩略图。 (裁剪成正方形)

    我目前正在使用一个 php 脚本 它根据最大宽度和高度创建缩略图 但是 我希望它始终创建方形图像并在需要时裁剪图像 这是我现在使用的 function makeThumb filename type global max width max
  • 解决Mesos主导Master

    我们使用 Mesos 在集群上运行作业 我们使用 haproxy 来指向 例如 mesos seanmcl com到 Mesos Master 如果该 Master 恰好不是领导者 UI 将在一段时间后重定向浏览器delay 发送给领导者
  • Application.Cells VS Application.ActiveSheet.Cells

    宏记录器生成以下语句 Cells Select 现在我明白 如果没有对象限定符 这将返回所有单元格作为Range object 但是 我想知道这个声明的完全限定版本是什么 Is it Application Cells Select App