Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba &引用;Dim myarray()作为字符串;VS";Dim myarray()作为变量;_Vba_Excel_Declaration_Variant - Fatal编程技术网

Vba &引用;Dim myarray()作为字符串;VS";Dim myarray()作为变量;

Vba &引用;Dim myarray()作为字符串;VS";Dim myarray()作为变量;,vba,excel,declaration,variant,Vba,Excel,Declaration,Variant,我总是害怕在假设会分配不必要的大量内存的情况下,将事物声明为变量 最近,为了提高电子表格的性能,我得到了相反的印象(请参见下面的编辑):Dim myarray()作为变量比Dim myarray()作为字符串 这两项声明的主要区别和后果是什么 无法在此处找到明确的指导: 编辑:受控性能测试 我运行了一个受控性能测试(将dim myarray()作为变量版本,复制并将两个变量更改为dim myarray()作为字符串) 正如您在下面看到的,我错了,性能差异并不显著 Dim myarray()作为变

我总是害怕在假设会分配不必要的大量内存的情况下,将事物声明为变量

最近,为了提高电子表格的性能,我得到了相反的印象(请参见下面的编辑):
Dim myarray()作为变量
Dim myarray()作为字符串

这两项声明的主要区别和后果是什么

无法在此处找到明确的指导:

编辑:受控性能测试

我运行了一个受控性能测试(将
dim myarray()作为变量
版本,复制并将两个变量更改为
dim myarray()作为字符串

正如您在下面看到的,我错了,性能差异并不显著

Dim myarray()作为变体版本

下午4:05:47开始
FXLoaded下午4:05:47 00:00 TD4:06:38下午00:51 LisofPCTD下午4:06:57 00:19 下午4:07:47 00:50 李索菲亚德4:08:14下午00:27 PrintCoBTD 4:08:46 PM 00:32 PrintCoBYD 4:09:18下午00:32 总计03:31 03:31

Dim myarray()作为字符串版本

下午4:25:53开始
FXLoaded下午4:25:53 00:00 TD4:26:53下午1:00 LisofPCTD下午4:27:10 00:17 下午4:28:07 00:57 李索菲亚德下午4:28:32 00:25 PrintCoBTD 4:29:03下午00:31 PrintCoBYD下午4:29:34 00:31
Total 03:41 03:41

将数组声明为数组将包含的任何数据类型都是有意义的,这为以后查看代码的任何人提供了清晰的信息。一般来说,最好让代码具有可读性,牺牲少许内存节省(尽管这可能取决于场景)。例如,如果数组仅包含字符串,则将数组声明为字符串。然而,如果数组将包含整数和字符串的混合物,则应使用变量

本质上,将数组声明为数据类型,该数据类型对于数组将要保存的内容是逻辑的

如果要从工作表填充数组,则必须将变量声明为变量。尝试填充已声明为字符串的数组(使用工作表中的值)将导致“类型不匹配”调试消息,无论该范围的值是否都是字符串

下面是一些与VBA中的数组相关的内容


无论如何,这就是我在声明数组时遵循的原则。使未来的开发人员更容易阅读代码>略微节省内存。

您所做的唯一更改是将
Variant
切换为
String
?您是否对代码计时以验证您的假设,即速度提高了?您提供的链接是指向VB.Net的,这与此没有直接关系。考虑到数组的灵活性,我非常喜欢使用变量,尤其是使用语法
Dim myarray As Variant
(一种可以容纳数组而不是变量数组的变量。我使用过这样的东西,有多达100000个条目(或更多)除了YMMV没有问题。@JohnColeman我还没有这方面的资料,但我想你说的是正确的答案。数组是我见过的唯一一种类型,我建议你使用
变量
类型。当你使用
字符串
类型时,你必须考虑将字符串定义为数组所需的所有额外字符@Chrismas007我认为你是对的,在VBA中,保持数组是变量的主要有效用例,尽管我认为出于某种原因,如果你想使用for-each循环通过用户定义的集合或字典,那么你需要使用变量作为循环变量,即使集合已知,例如保持字符串。感觉像?你是seri我们需要像最初一样对其进行基准测试,然后再进行一次更改并再次进行基准测试。我们人类在判断时间方面是出了名的糟糕。