数组与字典解决方案第三十三讲:工作表函数的应用及内存释放

《VBA数组与字典方案》教程(10144533)是我推出的第三套教程,目前已经是第二版修订了。这套教程定位于中级,字典是VBA的精华 ,我要求学员必学。7.1.3.9教程和手册掌握后,可以解决大多数工作中遇到的实际问题。

这套字典教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:数组与字典解决方案第三十三讲:数组中工作表函数的应用及内存的重新释放

【分享成果,随喜正能量】3大富在命,小富在勤。虽然光靠努力不会让你大富大贵,但也可以让你过的比的不差。人生没有摆渡人,只有自渡者。别人可以给你帮助,但无法替你承担。

第三十三讲 数组中工作表函数的应用及内存的重新释放

今日讲解VBA数组与字典解决方案的第33讲内容,数组中工作表函数的应用和数组内存的释放。

1 数组中工作表函数的利用

在数组中可以利用的函数我们之前讲过了JOIN、FILTER等,其实其他的一些工作表函数在数组中也是可以用的。

如:max 、min 、avervge 在数组中应用时结合工作表的区域,更加的方便,我们看下面的实例:

arr1 = Range("A1:A10") '把单元格区域A1:A10的值装入数组arr1

MsgBox Application.Max(arr1) '求数组的最大值

MsgBox Application.Min(arr1) '求数组的最小值

MsgBox Application.Average(arr1) '求数组的平均数

上述代码中首先将A1:A10的单元格区域赋值给数组arr1,这时候我们利用工作表函数的求最大值、最小值、平均数函数来求数组的最大值、最小值、平均数一样是可行的。

注意这时的函数前面要加上Application,表示是工作表函数。

2 数组所占用内存的释放

下面讲数组和内存的释放,我们清楚,数组之所以运行的速度快,是因为数组在内存中要预先占用一定的空间,这样的效果会造成内存的浪费,我们在程序的运行时,一个数组完成了它的历史使命了,但他的内存还在占用,会影响到后续程序的运行。

虽然我们在定义动态数组时就考虑到了上述的问题,可以让动态数组不必事先占用大量的内存备用,但是,在这个数组任务完成后同样也存在着上述的问题。

那么,有什么办法让数组在完成自己的程序任务后,释放内存呢?有。这就是erase 语句的作用了。erase语句对于固定的数组,将重新初始化每个元素,这时是保留元素个数的;如下面的表格提供的初始化的意义:

而对于动态数组erase语句将清空所用的元素,包括维数,在下次应用前要从新定义此变量;

我们看下面的代码:

Sub MyNZsz_33() '第33讲 数组中工作表函数的应用及数组内存的重新释放

Sheets("33").Select

arr1 = Range("A1:A10") '把单元格区域A1:A10的值装入数组arr1

MsgBox Application.Max(arr1) '求数组的最大值

MsgBox Application.Min(arr1) '求数组的最小值

MsgBox Application.Average(arr1) '求数组的平均数

Dim NumArray(10) As Integer ' Integer 数组。

Dim StrVarArray(10) As String '变长的 String 数组。

Dim StrFixArray(10) As String * 10 '定长的 String 数组。

Dim VarArray(10) As Variant 'Variant 数组。

Dim DynamicArray() As Integer '动态数组。

ReDim DynamicArray(10) '分配存储空间。

Erase NumArray '将每个元素设为 0。

Erase StrVarArray '将每个元素设为 '零长度字符串 ("")。

Erase StrFixArray '将每个元素设为 0。

Erase VarArray '将每个元素设为 Empty。

Erase DynamicArray '释放数组所用内存。

Erase arr1

arr1 = 1

MsgBox arr1

End Sub

代码截图:

看看代码的运行:

今日内容回向:

1 数组中工作表函数是如何利用的?

2 数组中如何重新释放内存?

我多年的VBA实践经验,全部浓缩在以下教程中:

相关推荐
2401_841495642 个月前
【自然语言处理】基于规则基句子边界检测算法
人工智能·python·自然语言处理·规则·文本·语言·句子边界检测算法
LucianaiB2 个月前
仓颉语言核心技术解析:如何开发高性能服务端应用
职场和发展·高性能·语言·仓颉
魔力之心4 个月前
daily notes[12]
语言
蓝天星空1 年前
ruby 的安装
jvm·python·php·ruby·rails·语言
火龙映天1 年前
Android中判断当前语言是否为繁体中文
android·语言·繁体中文
BQW_1 年前
【极速前进】20240706-24240714:用于Agent的树搜、理解LLM的语种困惑、事实知识抽取微调、Quiet-STaR
llm·agent·agi·语言·事实微调
噜噜不困o1 年前
“八股文”在实际工作中是助力、阻力还是空谈?
语言
爱桥代码的程序媛1 年前
鸿蒙OpenHarmony Native API【Native XComponent】
程序员·api·harmonyos·鸿蒙·openharmony·鸿蒙开发·语言
爱桥代码的程序媛1 年前
鸿蒙语言基础类库:【@system.router (页面路由)】
程序员·harmonyos·鸿蒙·openharmony·鸿蒙开发·页面路由·语言