网站首页 > 教程文章 正文
【分享成果,随喜正能量】人有德,不仅是一个人的修养,更藏着一个人的福气。在这个世界,我们的内心逐渐在失去什么,那种原本柔软善良,利他互助、和真正彼此温暖的悲悯之心。。
《VBA经典应用69例》(10178981),是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中要利用好VBA。本套教程共三册六十九个专题,今日内容是教程的应用11内容:VBA字节数组函数StrPtr()
应用11 利用VBA判断数组是否为空
我们这个专题的内容是有关数组的知识,数组一直是VBA知识点中一个比较关键的所在。我们在学习过程中一定要了解什么是数组,数组在具体程序应用过程中的意义是什么?当相同数据类型的项的列表或集合存储在连续的内存位置时,我们称之为数组;数组是软件开发中广泛用于存储数据的有用对象。
4 字节数组的函数StrPtr()
我们这部分讲解一个字节数组函数StrPtr(),这个函数是我各套教程中首次讲解到的,希望大家能理解和掌握。
- Byte变量:Byte变量存储为一个不带符号的 8 位(1 个字节)数字,值范围为 0-255。Byte数据类型可用于包含二进制数据。
- 字节数组:这个数组只不过是一个序列或字符。字符串可以直接分配给字节数组。数组的两个元素用于为字符串中的字符分配空间。
StrPtr函数:该函数返回真正的UNICODE字符串缓冲区的地址。也就是字符串变量在内存的地址。
- StrPtr函数主要用来产生高效的UNICODE API调用。在VB4,UNICODE形式的API函数的调用必须借助于Byte数组;
- StrPtr还能用于优化ANSI API函数的调用。在调用时使用StrConv和StrPtr就能避免将一个字符串变量多次传递给函数以及为每个调用而执行转换操作所造成的系统负担;
- StrPtr还是唯一能直观地告诉你空字符串和null字符串的不同的方法。对于null字符串(vbNullString),StrPtr的返回值为0,而对于空字符串,函数的返回值为非零。
- StrPtr在 64 位版本上返回 LongPtr,在 32 位版本(4 字节)上返回 Long。
实例3 StrPtr函数的利用
这个实例中我们会看到字符串的内存地址,如下代码:
Sub mynzD()
'声明字节数组和字符串
Dim arr1() As Byte
Dim samplestr As String
'赋值字符串
samplestr = "Coffee"
'检查数组是否为空。strptr()如果数组为空,则返回0。
Application.SendKeys "^g"
Debug.Print StrPtr(arr1) = 0
'将字符串直接分配给字节数组
arr1() = samplestr
'查看数组中存储的内容
For i = LBound(arr1) To UBound(arr1)
Debug.Print arr1(i)
Next
'检查数组是否为空。strprtr()如果数组为空,则返回0。
Debug.Print StrPtr(arr1) = 0
End Sub
代码的截图:
代码的讲解:
1)字符串可以直接分配给字节数组。数组的两个元素用于为字符串中的字符分配空间。最初数组是空的,因此strptr(arr1)返回true。
2) For i = LBound(arr1) To UBound(arr1)
Debug.Print arr1(i)
Next
以上代码将输出数组每个元素的Ascii值,“Coffee”的代码如下:
“C”的Ascii值为67
Ascii空字符
“o”的Ascii值为111
Ascii空字符
“f”的Ascii值为102
Ascii空字符
“f”的Ascii值为102
Ascii空字符
“e”的Ascii值为101
Ascii空字符
“e”的Ascii值为101
Ascii空字符
最后,数组不是空的,因此strprtr(arr1)返回false。
最后我们看一下代码的输出结果:
结论:在VBA中,除了字节数组的strprtr()函数外,没有直接的方法来查找数组是否为空。然而,我们可以结合自己的逻辑来检查数组的是否为空,这里“空”的意思在于用户。它可以是依据合并数组元素字符串的长度,也可以依据数组是否占用内存。但本讲的意义在于要大家理解Join函数、Trim函数、Len函数、strprtr函数的应用。
今日内容回向:
1 如何理解Join函数、Trim函数、Len函数、strprtr函数的应用的意义?
2 如何理解数组为空?
本讲内容参考程序文件:应用011.xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】物随心转,境由心造。人这一生,境遇如何,全由我们的心做主,智者,会把伤痛转化成快乐,把压力转化成动力,一路拼荆斩棘的成全自己,成就自己。。
猜你喜欢
- 2025-06-12 二十、Java数组(java实现数组)
- 2025-06-12 十大经典排序算法-堆排序,计数排序,桶排序,基数排序
- 2025-06-12 3分钟短文 | PHP 根据值移除数组元素,哪个方法最简单?
- 2025-06-12 JAVA程序员常用的几个工具类(java程序员主要工作内容)
- 2025-06-12 C# 基础知识系列- 3 集合数组(c#集合排序)
- 2025-06-12 JUnit5学习之三:Assertions类(junit5 assert)
- 2025-06-12 打工人私藏的4个Excel函数秘籍,效率提升3.7%
- 2025-06-12 稀疏数组——前端电子表格中的应用实战
- 2025-06-12 最快清除数组空值?分享 1 段优质 JS 代码片段!
- 2025-06-12 excel这个复杂数组公式怎么读?(excel数组公式怎么复制)
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)