VBA 变量何时实例化

2023-12-20

我很犹豫要不要问,但我找不到任何文档for VBA.

相关(但我不认为是骗人的):

  • C++ 全局变量什么时候创建? https://stackoverflow.com/questions/19618801/when-are-global-variables-created
  • 在Java中,变量应该在函数的顶部声明,还是在需要时声明? https://stackoverflow.com/questions/1411463/in-java-should-variables-be-declared-at-the-top-of-a-function-or-as-theyre-ne
  • C++ 在函数顶部或在单独的作用域中声明变量? https://stackoverflow.com/questions/3773396/declare-variables-at-top-of-function-or-in-separate-scopes
  • 以及最有可能相关的VB.NET 中的模块变量何时实例化? https://stackoverflow.com/questions/14366432/when-are-a-modules-variables-in-vb-net-instantiated
  • 我也看了一下C# 程序员.SE https://softwareengineering.stackexchange.com/questions/113262/why-declare-variables-close-to-where-they-are-used.

我认为我使用“实例化”这个词是正确的,但如果我错了,请纠正我。实例化是什么时候创建变量并分配它所需的资源?所以在 VBA 中我看到有两种方法可以做到这一点。

一切都在顶部!

Public Sub ToTheTop()
    Dim var1 As Long
    Dim var2 As Long
    Dim var3 As Long

    var1 = 10
    var2 = 20
    var3 = var1 + var1
    Debug.Print var3
End Sub

或者接近使用

Public Sub HoldMeCloser()
    Dim var1 As Long
    var1 = 10
    Dim var2 As Long
    var2 = 20
    Dim var3 As Long

    var3 = var1 + var1
    Debug.Print var3
End Sub

我喜欢把它们放在更容易使用的地方,这样更容易记住它们是什么,而其他人可能想把它们全部放在一边。这是个人喜好。

但是,我想我记得在某处读过 VBE 通过子/函数并实例化all继续之前的变量还要别的吗。这表明没有正确的方法在 VBA 中执行此操作,因为变量作用域in time不要改变。不是其中的范围Private vs Public.

而在其他语言中,范围似乎可以根据位置而变化,因此具有最佳实践.

我已经搜索这个文档有一段时间了,但是无论我使用什么词都没有给我指明正确的方向,或者文档不存在。


根据参考文档 https://msdn.microsoft.com/en-us/library/ee440517(v=office.12).aspx,

当过程开始运行时,所有变量都被初始化。数值变量初始化为零,变长字符串初始化为零长度字符串(""),定长字符串用 ASCII 字符代码 0 或 Chr(0) 表示的字符填充。变体变量被初始化为空。用户定义类型变量的每个元素都被初始化,就像它是一个单独的变量一样。

当您声明对象变量时,会在内存中保留空间,但其值将设置为 Nothing,直到您使用 Set 语句为其分配对象引用为止。

这意味着无论变量声明在哪里声明,它的空间/内存都是在进入过程时分配的。

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

VBA 变量何时实例化 的相关文章

  • 变量值更改时的 PyQt 事件

    我有一个变量 t t 0 我想在 t 值发生变化时启动一个事件 如何 没有 valuechanged connect 属性或任何变量 对于全局变量 单独使用赋值是不可能的 但对于属性来说非常简单 只需使用property https doc
  • 运行时错误“1004”:对象“_Global”的方法“Range”失败

    我在使用 Excel 时遇到问题 有一个生成参考号的表单 但是当我尝试生成参考号时 它有一条错误消息 运行时错误 1004 对象 Global 的方法 Range 失败 当我点击 调试 按钮时 它显示的代码如下 它突出显示代码第 4 行的错
  • 运行时错误“1004”:无法获取 WorksheetFunction 类的 Combin 属性

    我在 Excel 2013 的工作簿中有 VBA 函数 可以根据泊松分布计算 p 值 当 的时候events下面代码中的变量超过 1029 我得到运行时错误 1004 无法获取 WorksheetFunction 类的 Combin 属性
  • Excel VBA - 如何逐行读取csv文件而不是整个文件

    这是我需要读取的 csv 文件内容 header header header header header header value value value value value value value value value 我在网上找到
  • 我需要代码在两行之间复制并粘贴到另一张表中,并给出任何值?

    例如 我有 50 行数据 第一行有学生的名字 我需要代码将数据从 RAM 复制到 RAMESH 在这之间我有 20 行 我需要代码来复制行并将其粘贴到另一张纸中 它不应该问我名字 默认情况下 它必须采用 RAM 和 RAMESH 名称 好的
  • Java:直接从同一类的另一个实例访问私有字段

    我正在写一个equals Object obj 一个类的函数 我发现可以访问私有字段obj来自来电者 因此 不要使用 getter Odp other Odp obj if other getCollection contains ftw
  • Excel VBA 过滤和复制粘贴数据

    给定一个数据集 假设有 10 列 在 A 列中我有日期 在 B 列中我有 我想仅过滤 A 列 2014 年的数据 B 列 ActiveSheet Range A 1 AR 1617 AutoFilter Field 5 Operator x
  • 如何将“mysql source”命令与 mysql 变量一起使用?

    我需要从 mysql shell 执行一个基于如下条件的 SQL 文件 mysql gt 源 var 其中 var 包含文件名 这不可能 source是MySQL客户端程序在本地识别并执行的命令 变量存在于服务器上 因此客户端不知道什么 v
  • VBA 字符串 255 个字符限制

    我在使用 VBA 时遇到问题 并注意到它的字符串限制为 255 个字符 我实际上正在尝试通过 POST 发送 JSON 并暂停执行 我注意到该字符串始终只有 255 个字符 有没有办法调整字符串的大小或其他什么 我在这个问题上浪费了大约 6
  • 在组合框中显示可见工作表

    您好 我有以下代码来在组合框中显示工作表 创建工作表后 工作表会自动添加到列表中 我不希望隐藏的工作表在保管箱中可见 我怎么做 Option Explicit Private Sub ComboBox1 Change If ComboBox
  • 无法摆脱脚本中的硬编码延迟

    我用 vba 结合 selenium 编写了一个脚本来解析网页中可用的所有公司名称 该网页启用了延迟加载方法 因此每个滚动中只有 20 个链接可见 如果我滚动 2 次 则可见链接数为 40 个 依此类推 该网页中有 1000 个可用链接 我
  • Excel工作簿关闭后反复打开

    我使用了 Application ontime 方法来调度一些宏 关闭工作簿后 它会一次又一次地打开 为了解决这个问题 我在工作簿上设置了另一个事件 BeforeClosed 现在它显示运行时错误 1004 Object Applicati
  • 所以,我有 6 个“主”文件,然后分为 40 个单独的文件

    我将简要描述我想要的内容 我有 6 个 主 文件 每个文件包含 40 个工作表 如下所示 AG 工作簿有 HR Gp 1 到 HR Gp 40 ER 工作簿有 FB Gp 1 到 Gp 40 等 所有工作表都已 平坦 我已经成功创建了一个适
  • 将 Excel 范围转换为 VBA 字符串

    我想将给定范围内的值转换为 VBA 字符串 其中原始单元格值由任何选定的列分隔符和行分隔符分隔 分隔符可以是一个字符或更长的字符串 行分隔符是行末尾的字符串 该字符串应该像我们从左上角 从左到右 到右下角读取文本一样完成 以下是范围 A1
  • 类函数/变量在使用之前是否必须声明?

    所以我在学习课程时偶然发现了一些对我来说相当尴尬的事情 class Nebla public int test printout return x void printout printout2 private int x y void p
  • 如果总和为 0,则查找并删除带标题的最后一列

    我想创建一个宏 查找带有标题的最后一列 并仅当该列的总和等于零时才将其删除 到目前为止 这是我尝试过的 Dim LastCol As Long Dim i As Long With ThisWorkbook Sheets Sheet1 Fo
  • ssh远程变量赋值?

    以下内容对我不起作用 ssh email protected cdn cgi l email protection k 5 echo k 它只是返回一个空行 如何在远程会话 ssh 上分配变量 Note 我的问题是not关于如何将本地变量传
  • 替换字符串变量中的多个字符 (VBA)

    如何替换字符串变量中的多个内容 这是我在 VBA 中的示例函数 Private Function ExampleFunc ByVal unitNr As String If InStr unitNr OE gt 0 Then unitNr
  • 如何将参数从 Excel/VBA 传递到 Rstudio 中的脚本

    我正在尝试使用 Rstudio 从 VBA 打开 R 脚本 同时将参数传递给 R 脚本 然后我可以使用 commandArgs 访问该脚本 该问题与此处描述的问题非常相似 WScript Shell 用于运行路径中包含空格且来自 VBA 的
  • 如何修复日期过滤器 VBA,因为它没有拾取我范围内的所有日期

    我正在尝试创建一个过滤器来过滤掉我选择的日期内的所有日期 我选择的日期将始终反映整个月 例如 如果我需要 2019 年 5 月的数据 我将输入开始日期为 01 05 2019 结束日期为 31 05 2019 我的数据过滤器将需要选取经过我

随机推荐

  • Firefox ~84 中的“Paint Flashing Tool”在哪里?

    许多较旧的博客文章和MDN 文档 https developer mozilla org en US docs Tools Paint Flashing Tool值得一提的是 Firefox 有一个调试工具可以突出显示绘制的区域 我运行的是
  • Inverse glob - 根据文件名对通配符字符串进行逆向工程

    我想从一对文件名生成通配符字符串 有点像逆全局 例子 file1 some foo file txt file2 some bar file txt assert some file txt inverse glob file1 file2
  • 旋转到横向时 iPhone 视图控制器视图向下移动 20 像素

    我正在尝试使用 UIViewController 和 UITabBar 实现自定义 tabbarcontroller 到目前为止 一切工作正常 除了当我将设备旋转到横向时 UIViewController 将整个视图向下移动 20 像素 在
  • 如何使用 Yesod 和 Http-Conduit 将 FileInfo 发布到 Web 服务?

    我正在使用默认的 Yesod 脚手架项目 我创建了一个页面 显示一个简单的表单来上传文件 该表单可能会使用 Javascript 在客户端上创建 为简洁起见 该表单有一个文件输入
  • Jest setSystemTime 不适用于全局范围

    我正在尝试测试一个简单的减速器 其日期属性设置为今天 const today new Date export const initialState today console log new Date toDateString lt rea
  • CUDA 工具包 5 生产版本和 Visual Studio 2010 集成

    在没有 NVidia CUDA 论坛的情况下 有人知道如何解决这个问题吗 看来VS集成CUDA工具包有问题 我刚刚安装了 CUDA 工具包 5 的生产发行版 适用于 Windows 7 笔记本电脑的 32 位 替换了候选发行版 效果很好 现
  • 如何在调试模式下在浏览器中动态修改 JavaScript 代码? [复制]

    这个问题在这里已经有答案了 我想使用一些 IDE 它允许我动态更改 javaScript 代码并在浏览器中运行它 我不认为我可以在 Firebug 中做到这一点 我应该使用哪种 IDE 软件来进行 JavaScript 开发 是的 您可以在
  • Minikube 网络

    我有一台 Linux 构建机器 我也安装了 minikube 在 minikube 实例中 我安装了artifactory 我将使用它来存储各种构建工件 我现在希望能够在我的开发机器 这是一台与 Linux 构建机器位于同一网络上的不相关的
  • sql 根据条件选择最小值或最大值

    大家好 我正在尝试找到一种根据以下条件从一系列数据中选择最小值或最大值的方法 如果 setuptime 和 processtime cols 均为 0 则选择 MIN oprNum 操作尚未开始 因此获取第一个 oprnum 如果 setu
  • Mongodb/Mongoid - {:multi => true} 是什么意思

    关于这个问题 使用 Mongoid 我可以 update all 将值一次推送到多个条目的数组字段上吗 https stackoverflow com questions 9637728 with mongoid can i update
  • 非左值数组和序列点限制

    在 ISO C99 中 不是左值的数组仍会衰减为指针 并且可能带有下标 尽管它们在下一个序列点之后可能不会被修改或使用 source https gcc gnu org onlinedocs gcc Subscripting html 据我
  • 将本机库添加到 APK

    我正在开发一个使用本机代码的 Android 应用程序 我需要在每次构建时将外部本机库添加到 APK 的 lib 文件夹中 我怎样才能做到这一点 Thanks 将库放在本机库路径中 默认为项目文件夹中的 libs 如果您为 armeabi
  • 如何在 arangodb 的 AQL 中引用/转义字段名称?

    我找不到在哪里引用其中包含空格的字段名称 例如在执行时 FILTER s key a Supplier Id 上面的 sql 样式引用不起作用 数组访问也不起作用 正确的方法是什么 现在明白了 我被 SQL 咬住了 忘记了相等比较是用 在
  • 如何使用 void 通用指针用值填充数组?

    给出以下方法 void fillArray void arr int const numElements void val int size 如何填充数组 arr 的值为 val 不知道数组是什么类型 numElements是数组中元素的数
  • 无法激活 NavigationPageRenderer 类型的实例

    我有一个 MasterDetailPage 该页面被推送到导航 await MainPage Navigation PushAsync new MasterDevicePage 当主设备页面加载时 主页面的列表视图将选择其中一个页面并将其显
  • ParameterizedType 并创建通用 dao

    我尝试这个通用代码是因为我不想为数据库中的每个实体创建一个 dao 类 因为我有 80 个专门为那些我将执行 CRUD 查询的实体创建的 dao 类 因为在大多数情况下我只需要坚持或通过 id 进行查找 public interface G
  • 如何在lines()中添加其他字符,例如箭头?

    这个问题解释了如何使用lines 制作不同的线型 如何在R中为图形定义更多线型 https stackoverflow com questions 25788945 how to define more line types for gra
  • 为什么 eclipse 会创建 .settings 目录?

    我注意到 eclipse 最近创建了一个 settings 目录 里面有 1 个文件 我想知道是否应该将其添加到版本控制中 SVN 另外 这是新的吗 我已经使用eclipse很长一段时间了 但从未注意到它 目录中文件的内容是这样的 Sun
  • 如何在 JavaScript 中向 MVC 模型添加项目?

    我想使用 java 脚本动态地将项目添加到模型中的列表中 如何使 MVC 将新项目绑定到模型 我的模型 public class Garage public string Name get set public string Locatio
  • VBA 变量何时实例化

    我很犹豫要不要问 但我找不到任何文档for VBA 相关 但我不认为是骗人的 C 全局变量什么时候创建 https stackoverflow com questions 19618801 when are global variables